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.
pomoc przy ladowaniu
Moderatorzy: kondor, Inkwizytor
-
- Posty: 77
- Rejestracja: 31 grudnia 2009, 14:51
- ID Steam:
- ID gracza: 0
Re: pomoc przy ladowaniu
No to w pierwszym dobrze myślałeś, że chodzi o nawiasy
Jeśli chodzi o kierunek, to tylko w azymucie za pomocą getDir. Położenie wzgledem drugiego obiektu możesz wyliczyć następująco:
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.
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:
Mamy teraz wartości od -180 do 180, gdzie 0 to N, a -180 lub 180 to S.
Teraz potrzeba takiego kodu:
Teraz masz wartości _dir1 w przedziale <0;360)
Albo możesz użyć funkcji getDir
Żeby policzyć nachylenie na razie musisz wyliczyć wypadkową składowych w osiach x i y.
Żeby policzyć upragnione nachylenie wzgl. horyzontu trzeba użyć takiego kodu:
Znów mamy wartości od -180 do 180, ale chyba w tym wypadku to nawet lepiej.
Mam nadzieję że pomogłem.
Pozdrawiam

Kod: Zaznacz cały
if ((_player distance operator < 30) and (((getPos _player) select 2) > 30)) then hint "za wysoko";
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);
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;
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);
Teraz potrzeba takiego kodu:
Kod: Zaznacz cały
if (_dir < 0 ) then {
_dir1 = 360 + dir;
};
else
{
_dir1 = _dir;
};
Albo możesz użyć funkcji getDir
Kod: Zaznacz cały
_dir2 = getDir obiekt;
Kod: Zaznacz cały
_vh = (sin _dir) * _vy;
Kod: Zaznacz cały
_dir2 = atan (_vz/_vh);
Mam nadzieję że pomogłem.
Pozdrawiam
Re: pomoc przy ladowaniu
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ę!
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ę!