Przesuwanie kamery
Ostatnio zmodyfikowano 2012-10-25 21:19
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 ? |
|
SeaMonster131 |
» 2012-10-24 19:59:20 int cameraX, cameraY;
if( postac_idzie_w_prawo ) cameraX++;
..
rysuj( obiekt, x - cameraX, y - cameraY );
? :) |
|
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. |
|
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 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 |
|
|
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: x = szerokoscEkranu / 2 - szerokoscPostaci / 2; y = wysokoscEkranu / 2 - wysokoscPostaci / 2;
I zmieniaj tylko położenie kamery, położenie postaci zostaw w spokoju :) |
|
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. 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). |
|
« 1 » |