Skocz do zawartości
Bartcislaw

[ROZWIĄZANY]Ustawienie kamery

Rekomendowane odpowiedzi

W jaki sposób, a dokładnie jakie koordynaty powinna mieć kamera która patrzy jakby z góry na głowę dla gracza? Próbuję dosłownie wszystkiego i nie działa.

 

qsWZ68l.jpg

 

Chcę wymusić żeby kamera była cały czas w takiej pozycji. 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Kamera powinna być na tym samym X i Y co gracz ale na wyższym Z.

Kamera powinna patrzeć na to samo X i Y co gracz i na to samo albo mniejsze Z co gracz.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
1 godzinę temu, Sim00n napisał:

Kamera powinna być na tym samym X i Y co gracz ale na wyższym Z.

Kamera powinna patrzeć na to samo X i Y co gracz i na to samo albo mniejsze Z co gracz.

InterpolateCameraPos(playerid, posX, posY, posZ, posX, posY, posZ+30, 3000, CAMERA_MOVE);
        InterpolateCameraLookAt (playerid, posX, posY, posZ, posX, posY, posZ+30, 3000, CAMERA_MOVE);


Podnosić kamerę podnosi, aczkolwiek kamera cały czas skierowana jest w przód. Ostatecznie przy kilkudziesięciu zmianach dochodzę do momentu że ustawia się względem ustawionej pozycji kamery w grze. Czyli patrzę w dół to również pójdzie w górę, patrząc, ale gdy patrzę w górę to tak samo pójdzie kamera. 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Aha .. czyli chcesz żeby kamera się ruszała. Trzeba było mówić. Pamiętam jak kiedyś coś takiego pisałem na LSRP i miałem trochę problemów z kamerami. W końcu udało nam się zrobić przelogowanie pomiędzy postaciami:

 

Dla ciekawskich, tu jest kawałek kodu: http://pastebin.com/MdjPR8Pc

Tak czy siak, Twój problem powinno rozwiązać, zmniejszenie Z w LookAt. Nie dodawaj tam nic i powinno śmigać.

Zresztą napisałem Ci, że Z w LookAt ma być mniejsze od lub równe z pozycją gracza a w swoim kodzie dalej masz LookAt większe niż pozycja gracza ...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dziwne, mógłbym przysiąc że testowałem zmniejszenie i nie działało. Tak czy owak dziękuje.

Jeszcze miałbym pytanie. Co prawda wszystko działa, ale zauważyłem że zmienia się jakby położenie kamery, nie na właściwą kwadratową, a coś w rodzaju rombu.

0tcgYxu.jpg

Wystarczy do pozycji kamery dodać chociażby +1, stąd też moje pytanie. Dlaczego zmiana o 1 pozycję (dla mnie dość mała jednostka) zmienia cały układ na poprawny. Dodatkowo gdzie mógłbym więcej dowiedzieć się o ustawieniach kamery? Ciekawi mnie to, zwłaszcza że tyle problemów mi to sprawiło.  

Edytowane przez Frank

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ht0FgOe.jpg

Kamera jest dalej kwadratowa jak zaznaczyłem na czerwono. Gdyby była rombowa to Twój screenshot miałby kształt niebieskiego romba.

Masz na myśli, że obrót kamery w osi Z nie jest prostopadły do północy (lub nie jest ustawiony na 0 stopni). To dlatego, że kąt pod którym kamera jest obrócona po zakończeniu interpolacji jest liczony z różnicy pomiędzy punktem rozpoczęcia a punktem zakończenia interpolacji. Może to naprawić ustawiając obrót kamery ręcznie po zakończeniu interpolacji.

Tutaj funkcje:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

 

InterpolateCameraPos(playerid, posX, posY, posZ, posX+1, posY, posZ+30, 3000, CAMERA_MOVE);

 

Przy wstawieniu tego typu, kamera również się zaktualizuję do: 

5qp1QUY.jpg

Wydaję się całkiem w porządku, chociaż pomyślę nad Twoim rozwiązaniem.

Dzięki za wyjaśnienie.

Edytowane przez Frank

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×