pomoc przy ladowaniu

Edytor Arma (Arma, Arma2, Arma2OA)

Moderatorzy: kondor, Inkwizytor

ODPOWIEDZ
kmax1
Posty: 36
Rejestracja: 01 listopada 2009, 19:08
ID Steam:
ID gracza: 0

pomoc przy ladowaniu

Post autor: kmax1 »

Witam!
Pomyślałem sobie, że ciekawie by było gdyby podczas lądowania śmigłowcem gracz miałby asystę w postaci operatora naziemnego, który by go nakierowywał na lądowisko.
Mogłoby to być rozwiązane tekstowo ( jako pomoc w prawym górnym rogu [hint]) lub jako animacja człowieka na ziemi pokazującego co należy robić w danej chwili.
Nie wiem jak się do tego zabrać bo się na tym nie bardzo znam, kombinowałem na próbę coś prostego - jak zwykle z if np.
if ((_player distance operator < 30) and ((getPos _player) select 2) > 30)) then hint "za wysoko"
Osobno obie opcje działają ale razem (2 warunki spełnione przez and ) już nie. Pewnie jak zwykle chodzi o nawiasy albo inna banalną rzecz ale kombinowałem chyba na wszystkie sposoby i nic mi nie wychodzi.
Główny problem (oprócz braku znajomości podstaw -jak pewnie zauważyliście) mam z tym co można wpisać jako warunek, gdy np. dystans playera od operatora będzie mniejszy np o 30 i prędkość będzie zbyt duża. Czy są jakieś warunki np na sprawdzenie położenia obiektu względem innego w osi x,y,z ? i np jego pochylenia i prędkości?
Wiem, że może trochę chaotycznie napisałem ale mam nadzieję, że rozumiecie o co mi chodzi.
krzysiek2222
Posty: 77
Rejestracja: 31 grudnia 2009, 14:51
ID Steam:
ID gracza: 0

Re: pomoc przy ladowaniu

Post autor: krzysiek2222 »

No to w pierwszym dobrze myślałeś, że chodzi o nawiasy :)

Kod: Zaznacz cały

if ((_player distance operator < 30) and (((getPos _player) select 2) > 30)) then hint "za wysoko";
Jeśli chodzi o kierunek, to tylko w azymucie za pomocą getDir. Położenie wzgledem drugiego obiektu możesz wyliczyć następująco:

Kod: Zaznacz cały

_x = (position obiekt select 0) - (position ukł_odniesienia select 0);
_y = (position obiekt select 1) - (position ukł_odniesienia select 1);
_z = (position obiekt select 2) - (position ukł_odniesienia select 2);
No i wtedy _x to przesunięcie w osi x, y w y i z w wyskokości.
Jeśli chodzi o prędkość, to velocity.

Kod: Zaznacz cały

_vx = velocity obiekt select 0;
_vy = velocity obiekt select 1;
_vz = velocity obiekt select 2;
Gdzie _vx to składowa o kierunku W-E i zwrotem na E, _vy o kierunki N-S ze zwrotem na N o _vz to składowa o kierunku pionowym i zrocie to góry.
Co do nachylenia, to tylko możesz obliczyć z funkcji trygonometrycznych, ale będzie to tylko nachylenie wektora prędkości to poziomu. Nie znam funkcji, która pokazuje nachylenie obiektu.
Kierunek ruchu obiektu w poziomie można policzyć w ten sposób:

Kod: Zaznacz cały

_dir = atan (_vx/_vy);
Mamy teraz wartości od -180 do 180, gdzie 0 to N, a -180 lub 180 to S.
Teraz potrzeba takiego kodu:

Kod: Zaznacz cały

if (_dir < 0 ) then {
_dir1 = 360 + dir;
};
else 
{
_dir1 = _dir;
};
Teraz masz wartości _dir1 w przedziale <0;360)
Albo możesz użyć funkcji getDir

Kod: Zaznacz cały

_dir2 = getDir obiekt;
Żeby policzyć nachylenie na razie musisz wyliczyć wypadkową składowych w osiach x i y.

Kod: Zaznacz cały

_vh = (sin _dir) * _vy;
Żeby policzyć upragnione nachylenie wzgl. horyzontu trzeba użyć takiego kodu:

Kod: Zaznacz cały

_dir2 = atan (_vz/_vh);
Znów mamy wartości od -180 do 180, ale chyba w tym wypadku to nawet lepiej.

Mam nadzieję że pomogłem.

Pozdrawiam
kmax1
Posty: 36
Rejestracja: 01 listopada 2009, 19:08
ID Steam:
ID gracza: 0

Re: pomoc przy ladowaniu

Post autor: kmax1 »

Zatkało mnie:) Dziękuje za poświęcony czas i MEGA expresową i wyczerpującą odpowiedź.
Obawiam się jednak, że to trochę przerasta moje możliwości, bo mimo, że nawet chyba rozumiem (przynajmniej częściowo) to co napisałeś to nie znając podstaw skryptowania, najnormalniej w świecie sobie nie poradzę. :-(

Jesteś WIELKI! Normalnie nie mogę wyjść z podziwu... Zmotywowałeś mnie do tego, żeby ruszyć tyłek i się czegoś nauczyć. ...Będę próbował chociażby dlatego, że straciłeś swój prywatny czas żeby mi pomóc. Dziękuję!
ODPOWIEDZ

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