Ruch swobodnej kamery 2D
Ostatnio zmodyfikowano 2012-12-07 10:25
SeaMonster131 Temat założony przez niniejszego użytkownika |
Ruch swobodnej kamery 2D » 2012-12-06 18:48:47 Mam problem z kamerą w grze 2D. Próbowałem znaleźć filmik opisujący, jak ta kamera ma działać, lecz nie znalazłem teraz żadnej. Otóż, gra to platformówka, i chciałbym, aby kamera chodziła płynnie, kiedy ruszamy myszką. Tj. ruszymy lekko myszką w prawo, kamera także poruszy się lekko w prawo. Poruszymy myszką całkiem do prawej krawędzi, kamera poruszy się także dalej, tak, że postać np będzie całkiem przy lewej krawędzi. Kiedy natomiast wtedy przesuniemy myszkę w lewo (do środka ekranu), postać będzie przemieszczała się do centrum ekranu. Tak samo w pionie. Pewnie nie jeden raz widzieliście taką kamerę w grach :) Oczywiście ruch kamery ma być mniejszy, napisałem tak by zobrazować jej działanie. Próbowałem zrobić to mniej więcej tak: float pktx = 0;
if( ev.type == ALLEGRO_EVENT_MOUSE_AXES ) { pktx =( mouse.getX() - pktx ); if( player.x > 0 && player.x + 50 < WIN_W ) { cam.setX( cam.getX() +( pktx -( WIN_W / 2 - 25 ) ) / 100 ); player.x -=( pktx -( WIN_W / 2 - 25 ) ) / 100; } }
Lecz niestety gdy poruszam myszką, to kamera cały czas się porusza w prawo. A powinna także się cofać. Macie jakiś pomysł ? :) // Mniej więcej coś takiego: http://www.youtube.com/watch?v=9k-N49P5N1I |
|
ison |
» 2012-12-06 19:36:42 cam.setX( cam.getX() +( mx - WIN_W / 2 ) / 10 ); cam.setY( cam.getY() +( my - WIN_H / 2 ) / 10 ); Przed tym kodem przy każdej iteracji centruj kamerę z graczem a to wywołuj tuż przed wyświetlaniem. |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2012-12-07 10:25:50 Dzięki, działa super :) |
|
« 1 » |