|
SWiSH Forum
Forum użytkowników programów SWiSH
|
Jak zatrzymać obiekt? |
Autor |
Wiadomość |
roland
Site Admin Roland Zimek
Wersja SWiSH: Max4
Pomógł: 31 razy Wiek: 57 Dołączył: 21 Sty 2005 Posty: 424 Skąd: Opole
|
Wysłany: Sro 24 Cze, 2009 08:30 Jak zatrzymać obiekt?
|
|
|
Jak zatrzymać obiekt?
Zakładam, że wykorzystujemy do poniższych rozważaniach jedynie właściwości fizyczne obiektu. Gwoli przypomnienia, aby używać właściwości fizycznych w animacji:
1. Wybieramy zakładkę Export (to ta z prawej strony ekranu). Z listy rozwijanej Export options for wybieramy Script i zaznaczamy Support physics properties.
2. Wskazujemy duszka i ponownie przechodzimy do zakładki Export.
3. Z rozwijanej listy Export options for wybieramy Selected Object.
4. Zaznaczamy Uses physics properties.
OK. A teraz przykład. Tworzę duszka o nazwie Czerwona. W Scene_1 wpisuję następujący skrypt:
Kod: | onLoad () {
Czerwona._vx = 50;
} |
Czyli, w momencie uruchomienia animacji nadaję duszkowi Czerwona prędkość poziomą 50. Będzie się on poruszał ze stałą prędkością. Chciałbym jednak, aby zatrzymał się, gdy osiągnie współrzędną 500. Dla tego duszka tworzę więc skrypt:
Kod: | onEnterFrame(includingFirstFrame) {
if (this._x > 500) {
this._vx = 0;
}
} |
Czyli, jeżeli współrzędna przekroczy wartość 500, ustawiam prędkość 0. Duszek się zatrzymuje.
Dorysujmy jednak drugiego duszka o nazwie Niebieska. Zmodyfikujmy skrypt wykonywany dla Scene_1, tak aby nadać mu przyspieszenie:
Kod: | onLoad () {
Czerwona._vx = 50;
Niebieska._ax = 50;
} |
Po osiągnięciu współrzędnej 500 chcemy, aby obiekt łagodnie się zatrzymał. Wpisujemy więc następujący skrypt:
Kod: | onEnterFrame(includingFirstFrame) {
if (this._x > 500) {
this._ax = -100;
}
} |
Jednak obiekt po zatrzymaniu się posiada cały czas ujemne przyspieszenie, więc zaczyna się poruszać w przeciwną stronę.
Zmodyfikujmy skrypt:
Kod: | onEnterFrame(includingFirstFrame) {
if (this._x > 500) {
this._ax = -100;
}
if (this._vx < 0) {
this._ax = 0;
this._vx = 0;
}
} |
Czyli: jeżeli prędkość obiektu będzie mniejsza od zera, to zarówno przyspieszenie i prędkość mają zostać wyzerowane.
Na pierwszy rzut oka jest wszystko OK. Niestety obiekt Niebieska dalej będzie się poruszał wstecznym ruchem (będzie to bardzo powolny ruch).
Dlaczego? Przecież nadaliśmy mu zarówno przyspieszenie jak i prędkość równą 0. Tak ale przez ułamek skryptu nadal posiada przyspieszenie -100. To przyspieszenie nadane na początku skryptu obowiązuje przez kilka wierszy, aż je nie wyzerujemy.
Powyższy przykład znajduje się w przykładzie Movie1.
Aby zatrzymać obiekt Niebieska, należałoby dla niego zmodyfikować skrypt, na przykład na następujący:
Kod: | onEnterFrame(includingFirstFrame) {
if (this._x > 500 and this._vx > 0) {
this._ax = -100;
} else if (this._x > 500) {
this._ax = 0;
this._vx = 0;
}
} |
Nie wymaga chyba to wyjaśnień. Plik Movie2.
I jeszcze jedno. Jak traktować właściwości fizyczne, szczególnie jeżeli chodzi o prędkość i przyspieszenie. Należy te właściwości dokładnie tak samo jak w przypadku samochodu. Jeżeli samochód ma przyspieszenie dodatnie to powoduje to tak naprawdę zwiększanie prędkości. A czy nadanie przyspieszeniu wartości 0 spowoduje zatrzymanie samochodu. Nie, samochód będzie się poruszał ze stała prędkością. |
|
|
|
|
adammisiek
Początkujący
Dołączył: 01 Sie 2009 Posty: 2 Skąd: Ełk
|
Wysłany: Sob 01 Sie, 2009 18:05
|
|
|
a czy można by dostać jakąś pomoc.. w zderzaniu obiektów ?
np. jedną kulką z funkcją MouseDraggingUnlocked uderzamy w drugą kulkę i ona odskakuje, a okienko animacji zachowuje się jak realny świat czyli np. ma grawitację co spowoduje, że kulki będą spadały na "ziemię" ? |
_________________ Adam |
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|
|
|
|
|
Nowe zasady dotyczące cookies. Wykorzystujemy pliki cookies, aby nasz serwis lepiej spełniał Państwa oczekiwania. Można zablokować zapisywanie cookies, zmieniając ustawienia przeglądarki.
| Strona wygenerowana w 0.17 sekundy. Zapytań do SQL: 15 |
|
|