Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Ruch swobodnej kamery 2D

Ostatnio zmodyfikowano 2012-12-07 10:25
Autor Wiadomość
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:
C/C++
float pktx = 0;

if( ev.type == ALLEGRO_EVENT_MOUSE_AXES ) // poruszylismy myszka
{
    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;
    }
}

// WIN_W/2-25 to miejsce gdzie wyswietlana jest na poczatku postac; srodek ekranu

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
P-70461
ison
» 2012-12-06 19:36:42
C/C++
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.
P-70469
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2012-12-07 10:25:50
Dzięki, działa super :)
P-70479
« 1 »
  Strona 1 z 1