Wysokość celu kamery.

Moderator: Inkwizytor

adrian6190
Posty: 10
Rejestracja: 11 lutego 2009, 19:58
ID Steam:
ID gracza: 0

Wysokość celu kamery.

Post autor: adrian6190 »

Witam.

Jak ustawić żeby cel kamery (wyzwalacz) był na wys. np: 150 m.
Awatar użytkownika
Trance
Posty: 1090
Rejestracja: 20 maja 2007, 19:06
ID Steam:
ID gracza: 0

Re: Wysokość celu kamery.

Post autor: Trance »

_wspolrzednax = position twoj_cel select 0;
_wspolrzednay = position twoj_cel select 1;
_wporzednaz = 150;

pozycja_celu = [_wspolrzednax,_wspolrzednay,_wspolrzednaz];

_camera CamSetTarget _pozycja_celu;


gdzie:
twoj_cel to nazwa wyzwalacza w edytorze
_camera to nazwa kamery, ktora tworzona jets na poczatku pliku z filmikiem.
Obrazek
adrian6190
Posty: 10
Rejestracja: 11 lutego 2009, 19:58
ID Steam:
ID gracza: 0

Re: Wysokość celu kamery.

Post autor: adrian6190 »

A może ktoś napisać jakiś przykład bo nie chce mi działać.
Może napiszę dokładniej.
Koncepcja jest następująca:

Kamera ma cel na wysokości 150 m, ale też kamera musi być na wysokości 150 m.
Awatar użytkownika
Trance
Posty: 1090
Rejestracja: 20 maja 2007, 19:06
ID Steam:
ID gracza: 0

Re: Wysokość celu kamery.

Post autor: Trance »

Plik jakis intro.sqs:

_Camera="CAMERA" CamCreate [0,0,0]
_Camera CameraEffect ["INTERNAL","BACK"]

_wspolrzednax = position cel select 0;
_wspolrzednay = position cel select 1;
_wporzednaz = 150;
pozycja_celu = [_wspolrzednax,_wspolrzednay,_wspolrzednaz];
_Camera CamSetTarget _pozycja_celu;
_ox=GetPos kamera Select 0
_oy=GetPos kamera Select 1
_Camera CamSetPos [_ox,_oy,3]
_Camera CamCommit 0

_Camera CameraEffect ["TERMINATE","BACK"]
CamDestroy _Camera
Exit

Legenda:
cel - nazwa wyzwalacza zawierajacego cel w edytorze
kamera - nazwa wyzwalacza-kamery
Obrazek
adrian6190
Posty: 10
Rejestracja: 11 lutego 2009, 19:58
ID Steam:
ID gracza: 0

Re: Wysokość celu kamery.

Post autor: adrian6190 »

Trance pisze:Plik jakis intro.sqs:

_Camera="CAMERA" CamCreate [0,0,0]
_Camera CameraEffect ["INTERNAL","BACK"]

_wspolrzednax = position cel select 0;
_wspolrzednay = position cel select 1;
_wporzednaz = 150;
pozycja_celu = [_wspolrzednax,_wspolrzednay,_wspolrzednaz];
_Camera CamSetTarget _pozycja_celu;
_ox=GetPos kamera Select 0
_oy=GetPos kamera Select 1
_Camera CamSetPos [_ox,_oy,3]
_Camera CamCommit 0

_Camera CameraEffect ["TERMINATE","BACK"]
CamDestroy _Camera
Exit

Legenda:
cel - nazwa wyzwalacza zawierajacego cel w edytorze
kamera - nazwa wyzwalacza-kamery
Nie wiem czemu, ale skrypt mi nie działa.
Domyślam się że tam gdzie pogrubiłem ma być "wspolrzednaz".
Awatar użytkownika
kondor
Posty: 1526
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: Wysokość celu kamery.

Post autor: kondor »

Kod: Zaznacz cały

_Camera CamCommit 0

_Camera CameraEffect ["TERMINATE","BACK"]
CamDestroy _Camera
przydałoby się jeszcze jakieś czekanie między camCommit a zniszczeniem kamery
Awatar użytkownika
Trance
Posty: 1090
Rejestracja: 20 maja 2007, 19:06
ID Steam:
ID gracza: 0

Re: Wysokość celu kamery.

Post autor: Trance »

No tak, klepałem z klawiatury i nie bardzo sprawdzałem, chodziło mi o sam zarys. Podobnie z tym czekaniem ;)
Obrazek
adrian6190
Posty: 10
Rejestracja: 11 lutego 2009, 19:58
ID Steam:
ID gracza: 0

Re: Wysokość celu kamery.

Post autor: adrian6190 »

A czy jest jakaś inna metoda żeby ustawić wysokość celu (wyzwalacz).
Ta podana przez trance nie działa. :(
Awatar użytkownika
aszek
Posty: 133
Rejestracja: 11 lipca 2008, 06:17
ID Steam:
Numer GG: 8568774
ID gracza: 0

Re: Wysokość celu kamery.

Post autor: aszek »

Oczywiście, że jest.

Najpierw ustawiasz cel dla kamery. Zakładam, że cel jest obiektem, który sobie leci bo zaapewne chcesz pokazać jakieś przelatujące źródło destrukcji:

cam camSetTarget cel;

Przesuwasz kamere relatywnie (w stosunku do tego na co patrzy kamera):

cam CamSetRelPos [zmiana odległości dla X, zmiana odległości dla Y, zmiana wysokości dla Z];

u Ciebie w WP wystarczy: this exec 'skrypcik.sqs';


'skrypcik.sqs'

Kod: Zaznacz cały

_cel = _this select 0;

cam camSetTarget _cel;
cam CamSetRelPos [10, -10, -1];
cam CamCommit 0;
@CamCommitted cam;
exit;

Tylko jedna uwaga. Jeśli chcesz kamerkę sterować po wielu wyzwalaczach, lub wielu WP, to obiekt 'cam' musi być zmienną globalną (nie może być '_cam'). W wyzwalaczu (WP) inicjującym scenkę powołaj do życia kamerkę, w wyzwalacach (WP) steruj sobie nią 'CamSetRelPos' a na koniec usuń obiekt kamery. Szczególy już znasz, bo koledzy podali.

Zaproponowane Ci wcześniej rozwiązania polegające na ustawieniu celu dla kamery:

cam CamSetTarget _pozycja_celu;

Kieruje obiektwy statycznie w konkretne miejsce. To jest dobre jeśli kadrujesz otocznie. Natomiast jeśli chcesz aby obiektyw PODĄŻĄŁ za obiektem na który patrzy, to cel ustawiasz jako obiekt a nie jego współrzędne:

cam CamSetTarget obiekt_w_który_celuje_kamera;

np:

cam CamSetTarget player;


CamSetTarget ma dwa alternatywne sposoby wkazywania celu: WSPÓŁRZĘDNE lub OBIEKT.
"True glory consists in doing what deserves to be written, in writing what deserves to be read." - Pliny The Elder
adrian6190
Posty: 10
Rejestracja: 11 lutego 2009, 19:58
ID Steam:
ID gracza: 0

Re: Wysokość celu kamery.

Post autor: adrian6190 »

Celem jest wyzywalacz (nieruchomy)
Poprostu chcę ustawić żeby ten cel (wyzwalacz) (na który będzie skierowana kamera) był na wysokości np 150 m
Załączniki
obraz.gif
Awatar użytkownika
aszek
Posty: 133
Rejestracja: 11 lipca 2008, 06:17
ID Steam:
Numer GG: 8568774
ID gracza: 0

Re: Wysokość celu kamery.

Post autor: aszek »

W Arma na obiekty działa grawitacja, więc obiekt (obdarzony masą) zawsze spadnie na ziemie. Nie chce mi się teraz grzebać w configach, czy empirycznie sprawdzić czy obiekt typu Tigger spadnie na ziemie (ma masę). Najprościej (jak Ci się chce) to przetestować:

'wyzwalacz' to nazwa Twojego... wyzwalacza.

Kod: Zaznacz cały

wyzwalacz setPos [((wyzwalacz getpos) select 0), ((wyzwalacz getpos) select 1), 150];
cam = "CAMERA" CamCreate position wyzwalacz;
cam CamSetTarget wyzwalacz;
cam CamSetRelPos [0, 0, 0];
cam CamCommit 0;
@CamCommitted cam;
~10
camDestroy cam;
exit;
Jakby się okazało, że kamera zaczyna patrzeć coraz niżej, to:

Kod: Zaznacz cały

_pos = [(wyzwalacz getpos) select 0), ((wyzwalacz getpos) select 1), 150];
cam = "CAMERA" CamCreate _pos;
cam CamSetTarget _pos;
cam CamCommit 0;
@CamCommitted cam;
~10
camDestroy cam;
exit;
edit:

argument dla 'getpos' podaje się oczywiście za funkcją, czyli:
(getpos wyzwalacz)
zamiast:
(wyzwalacz getpos) < - mój błąd

Tak, to jest jak się pisze z palca... Popraw tylko to sobie i powinno być (na pierwsze testy) wystarczające.
"True glory consists in doing what deserves to be written, in writing what deserves to be read." - Pliny The Elder
ODPOWIEDZ

Wróć do „Edytor - tworzenie misji, skrypty oraz programowanie”