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

Przesuwanie kamery

Ostatnio zmodyfikowano 2012-10-25 21:19
Autor Wiadomość
Kmicic
Temat założony przez niniejszego użytkownika
Przesuwanie kamery
» 2012-10-24 19:43:51
Mam pewien problem ze stworzeniem kamery przesuwanej w grze. Przykładowo mam mapkę 4000x4000 i postać 50x50, jak powinienem zwiększać współrzędne mapki względem tego jak poruszam postacią tak, by wszystko współgrało, i poruszało się równo ?
P-67404
SeaMonster131
» 2012-10-24 19:59:20
C/C++
int cameraX, cameraY;

if( postac_idzie_w_prawo )
     cameraX++;

..

rysuj( obiekt, x - cameraX, y - cameraY );
? :)
P-67405
Kmicic
Temat założony przez niniejszego użytkownika
» 2012-10-24 20:17:41
Nie no próbowałem coś takiego, kończyło się na tym że np. przytrzymuję KEY_RIGHT no i postać w pewnym momencie wylatuje za mapkę, to znaczy że mapka przesuwała się wolniej od postaci mimo że współrzędne zwiększała się jednakowo.
P-67408
Kmicic
Temat założony przez niniejszego użytkownika
» 2012-10-24 21:14:56
np. wczytuje mape 4000x4000 a postać ma 50x50.

x = połowa wysokości ekranu - szerokość obrazka; 900/2 - 50
y = 700/2 - 50

mapkę ładuje na współrzędnych camX = 0 i camY = 0
C/C++
case ALLEGRO_KEY_DOWN: { y += moveSpeed; cameraY -= moveSpeed; break; }
case ALLEGRO_KEY_RIGHT: { x += moveSpeed; cameraX -= moveSpeed; break; }
case ALLEGRO_KEY_LEFT: { x -= moveSpeed; cameraX += moveSpeed; break; }
case ALLEGRO_KEY_UP: { y -= moveSpeed; cameraY += moveSpeed; break; }

No i gdy idę to kwadrat 50x50 powinien być ciągle w centrum a on powoli się oddala aż znika z pola widzenia i widać tylko przesuwającą się mapkę. UWAGA idą w tym samym kierunku (to tak jak by ktoś sugerował ze odwrotnym i to jest problem)

Używaj opcji "Edytuj" - xevuel
P-67424
SeaMonster131
» 2012-10-25 16:13:06
Zmienne x,y to zmienne postaci? Jeżeli tak, to ich nie zmieniaj...
Po drugie, jeżeli chcesz mieć na środku postać, to daj:
C/C++
x = szerokoscEkranu / 2 - szerokoscPostaci / 2;
y = wysokoscEkranu / 2 - wysokoscPostaci / 2;
I zmieniaj tylko położenie kamery, położenie postaci zostaw w spokoju :)
P-67473
bingo009
» 2012-10-25 21:19:54
Chyba, że chcesz zrobić jak było w Mario. Kamera tam zaczyna ruch, kiedy gracz podejdzie do prawej strony. W takim razie wystarczy 1 warunek na sprawdzanie pozycji postaci na ekranie.
C/C++
if( klawisz == klawisz_w_prawo )
{
    if( graczx >= n ) kamera++; else
    graczx++;
}

n w tym kodzie oznacza pozycje na ekranie, na której musi znaleźć się gracz, aby kamera zaczęła się poruszać. Analogicznie dla innych klawiszy(jak w góre i w dół to pozycje y modyfikujesz).
P-67509
« 1 »
  Strona 1 z 1