Teraz jest Pt 29 mar, 2024 00:50


Skrypt tworzący pocisk

Dział poświęcony edytorowi ArmA II i Operation Arrowhead, czyli tworzeniu misji.
  • Autor
  • Wiadomość
Offline
Avatar użytkownika

JaFranek

Major

Major

  • Posty: 581
  • Dołączył(a): Wt 16 lis, 2004 14:46
  • Lokalizacja: Tbg

Skrypt tworzący pocisk

PostWt 22 lut, 2011 00:11

Posiada ktoś może skrypt który tworzy pocisk (kula z karabinu) w danym miejscu i wcelowuje go w konkretny cel?
Próbowałem sam zrobić taki skrypt, szukałem też sporo w internecie ale nic nie znalazłem poza fragmentem niedokończonego kodu do przemieszczania obiektów.
Wydaje mi się że kula musi mieć nadany pęd setvelocity ponieważ po stworzeniu nie porusza się w żadnym kierunku tylko spada na ziemię (siła grawitacji). Problem jest z obliczeniem wartości dla setvelocity.


Niedokończony kod do przesuwania obiektów znaleziony w internecie
Kod: Zaznacz cały
_target_object = _this select 0;    // target object
_vehicle = _this select 1;          // object to move to target
_speed = _this select 2;           // desired speed of object to move

_targetPos = getpos(_target_object);
_speed = speed _vehicle;

// assume vehicle is facing target
_dir = getDir _veh;

// Calculate velocity x,y,z factors
_vx = (sin _dir)*_speed;
_vy = (cos _dir)*_speed;

_vy = ????    //// How do I cacluate Y value??

// I think this is how you move the vehicle toward the target
_vehicle setVectorDir[_vx/_vh, _vy/_vh, _vz/_vh];
_vehicle setVelocity [_vx, _vy, _vz];
Nie pytaj, co OF może zrobić dla ciebie, ale co Ty możesz zrobić dla OF
Offline
Avatar użytkownika

Smookie

Chorąży

Chorąży

  • Posty: 187
  • Dołączył(a): Wt 27 lip, 2004 19:42

PostWt 22 lut, 2011 11:20

Otwórz ksiażkę od fizyki z gimnazjum... :)

http://pl.wikipedia.org/wiki/Rzut_uko%C5%9Bny

I setpos da rade :)

Ostatecznie.... jaki masz problem z setVelocity? Zeby obiekt zasuwal do przodu this setVelocity [_vinit * sin(getdir this), _vinit * cos(getdir this), 0]; co da ci ruch poziomy. zwiekszenie z powoduje ruch ukośny (w teorii, jesli fizyka army dobrze dziala) :)

ps velocity - prędkość
Offline
Avatar użytkownika

JaFranek

Major

Major

  • Posty: 581
  • Dołączył(a): Wt 16 lis, 2004 14:46
  • Lokalizacja: Tbg

PostWt 22 lut, 2011 14:07

Mam co chciałem. Przerobiłem przykład podany przy komendzie setVelocity (nie wiem jak wcześniej to przeoczyłem)

Zamieszczam skrypt tutaj. Może się komuś też przyda

Kod: Zaznacz cały
_attacker = _this select 0; comment "skąd ma być wystrzelona kula";
_cel = _this select 1;
_wysokosc = 1;

_targetpos = getPos _cel;

_bullet = "B_30mmA10_AP" createvehicle [(getPos _attacker select 0),(getPos _attacker select 1), _wysokosc];

_bulletpos = getPos _bullet;

_vel = velocity _attacker;
_dir = ((_targetpos select 0)-(_bulletpos select 0)) atan2 ((_targetpos select 1)-(_bulletpos select 1));
_speed = 800; comment "Prędkość początkowa m/s";
_bullet setVelocity [(_vel select 0)+(sin _dir*_speed),(_vel select 1)+ (cos _dir*_speed),(_vel select 2)];

exit


Dodam sobie jeszcze aby skrypt uwzględniał odchylenia w pionie i bedzie git :)
Nie pytaj, co OF może zrobić dla ciebie, ale co Ty możesz zrobić dla OF
Offline

MedicPl

Kapral

Kapral

  • Posty: 70
  • Dołączył(a): Wt 14 gru, 2010 18:43

PostSo 13 sie, 2011 11:38

Mam pytanie, jak użyć tego skryptu?
Offline
Avatar użytkownika

Sejtan

Major

Major

  • Posty: 676
  • Dołączył(a): Pn 19 lip, 2004 21:26
  • Lokalizacja: Starogard Gdański

PostSo 13 sie, 2011 12:23

Kod: Zaznacz cały
nul = [pos, cel] execVM "nazwa_skryptu.sqf"


pos - czyli _attacker, pozycja w której zostanie stworzony pocisk,
cel - czyli _cel... chyba nie muszę tłumaczyć :]
Offline

MedicPl

Kapral

Kapral

  • Posty: 70
  • Dołączył(a): Wt 14 gru, 2010 18:43

PostSo 13 sie, 2011 17:54

Dzięki. :spoko:

Powrót do [ArmA II] Edytor

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 12 gości

cron