|
SWiSH Forum Forum użytkowników programów SWiSH |
 |
SWiSH Max - Problem z poruszeniem obiektu o wartość kąta i z powrotem
voytas - Wto 12 Sty, 2010 14:33 Temat postu: Problem z poruszeniem obiektu o wartość kąta i z powrotem Witam,
Chcę wykonać efekt reflektora - szperacza. Promień skierowany w gorę porusza się w lewo i w prawo o pewną wartość zadanego kąta.
Przesunięcie promienia o wartość kąta w jedną stronę to nie problem:
Kod: |
onSelfEvent(EnterFrame) {
if (szper._rotation<125) {
szper._rotation += 4;
}
};
|
Problem w tym ze nie wiem jak wrócić z promieniem do punktu wyjścia. Kombinowałem coś takiego:
Kod: |
onSelfEvent(EnterFrame) {
if (szper._rotation<125) {
szper._rotation += 4;
}
if (szper._rotation==125) {
szper._rotation -= 4;
}
};
|
ale niestety nie działa w 100%. Promień leci w prawo o 125 stopni i staje w miejscu i po animacji....
Proszę o pomoc.
Pozdrawiam
Voytas
smok3n - Wto 12 Sty, 2010 15:20
Można się pokusić o fizyczne paramtry obiektu _vrotation, w tym celu utwórz mc'eka i nazwij go szper, tak jak to zrobiles, ustaw sobie anchor'y tam gdzie ma być oczekiwany punkt obrotu ( to ważne jeżeli obiekt nie jest symetryczny - a pewnie taki nie będzie); użyj do przesuwania punktu kursora myszki z przytrzymanym klawiszem [Alt]; w szper wpisz takie coś :
Kod: | onSelfEvent (load) {
zmienna = 0; // to zostawiasz, bo to licznik
okres = 40; // to mozna powiedziec jest czas obrotu
predkosc = 40; // to predkosc obrotowa
}
onFrame (1) {
if (zmienna < okres) {
this._vrotation = predkosc;
}
if (zmienna >= okres) {
if (zmienna >= 2*okres){zmienna = 0;}
this._vrotation = -predkosc;
}
zmienna+=1;
}
onFrame (2) {
prevFrameAndPlay();
}
|
Powinno działac poprawnie, ale nie zapomnij ustawić Export settings for movie na mc'eku szper ustaw Uses Physics Properties i w ogólnych dla filmu Support Physics Properties, w przeciwnym wypadku nie zadziała :[
Daj znać jak zadziała bo nie próbowałem, nie mam Słiszka pod ręką :[
Kurde ale byczka strzelilem troche moja wina
Tutaj skrypt łatwiejszy BEZ PHYSICS PROPERTIES
Kod: | onSelfEvent (load) {
zmienna = 0; // to zostawiasz, bo to licznik
okres = 40; // to mozna powiedziec jest czas obrotu
predkosc = 4; // to predkosc obrotowa
}
onFrame (1) {
if (zmienna < okres) {
this._rotation += predkosc;
}
if (zmienna >= okres) {
if (zmienna >= 2*okres){zmienna = 0;}
this._rotation += -predkosc;
}
zmienna+=1;
}
onFrame (2) {
prevFrameAndPlay();
} |
Nie ma to jak sobie utrudniać życie
voytas - Wto 12 Sty, 2010 20:14
Serdeczne dzięki smok3n - biega aż miło
Januszr - Sro 13 Sty, 2010 08:39
Najbardziej prostackie rozwiązanie w załączniku.
|
|