Jak wykonać ruch sinusoidalny
Czasami będziemy potrzebowali, by nasz obiekt, np. wrogi statek powietrzny poruszał się ruchem sinusoidalnym. Możemy go w dość łatwy sposób uruchomić u siebie. Zobaczmy jak to zrobić.
Oczywiście do uruchomienia takiego ruchu wykorzystamy funkcję trygonometryczną jaką jest sinus. By wywołać taki ruch na wzór wykresu tejże funkcji trzeba przemieszczać obiekt w osi Y tym co zwraca sinus ewentualnie powiększone o określoną wartość tzw. amplitudę zaś w osi X należy przesuwać jednostajnie w określonym kierunku w lewo lub w prawo.
Idea jest dość prosta zajmijmy się więc jej realizacją.
local pilka_plazowa_mala = display.newImage("pilka_plazowa_mala.png")
punkt_startowy_y=250
pilka_plazowa_mala.x=0
pilka_plazowa_mala.y=0
i=0
amplituda=200
function przesun()
pilka_plazowa_mala.x= pilka_plazowa_mala.x+10
pilka_plazowa_mala.y=punkt_startowy_y+amplituda*math.sin(i)
i=i+0.3
if i==360 then i=0 end
if pilka_plazowa_mala.x>700 then pilka_plazowa_mala.x=-50 end
end
Runtime:addEventListener("enterFrame", przesun)
Na początku ustawiamy punkt startowy, czyli przesunięcie względem osi Y na 250 pikseli, bo przecież gdy zaczniemy od 0 to połowa sinusiody nie będzie widoczna i amplitudę czyli wysokość sinusoidy oraz jej gęstość.
Następnie w funkcji przesun() przesuwamy względem osi x równomiernie o 10 pikseli za każdym odświeżeniem ekranu, co załatwia śledzenie zdarzenia "enterFrame". W niemal tym samym czasie przemieszczamy naszą piłkę względem osi Y zaczynając od punktu startowego mnożąc wynik funkcji sinus(kąt_od_zera_do_360) przez wcześniej ustawioną amplitudę. Jej gęstość możemy zmienić zmieniając parametr i, czyli linijka i=i+0.3 gdzie zwiększanie warości spowoduje, że wyświetlane będzie więcej cykli zaś zmniejszanie spowoduje rozciągnięcie sinusoidy.
Czytaj dalej: Jak poruszać obiekt po okręgu?
Warning: include_once(includes/rss_fetch.php) [function.include-once]: failed to open stream: No such file or directory in /home/ekoinst/domains/pcwiedza.pl/public_html/tworzenie-gier/includes/funkcje.php on line 548
Warning: include_once() [function.include]: Failed opening 'includes/rss_fetch.php' for inclusion (include_path='.:/opt/alt/php52/usr/share/pear:/opt/alt/php52/usr/share/php') in /home/ekoinst/domains/pcwiedza.pl/public_html/tworzenie-gier/includes/funkcje.php on line 548