|
发表于 2014-7-1 21:58:13
|
显示全部楼层
本帖最后由 qevhytpl 于 2014-7-2 22:26 编辑
- _tar = _this select 0; //目标
- _Heli = _this select 1; //攻击直升机
- _d = _this select 2;//设置提前量
- _d_s = _this select 3;//开始运算距离
- _d_a = _this select 4;//调整姿态距离 _d_a - 5 < _d
- _gl = _this select 5;//
- _Heli move position _tar;
- waituntil{[_tar,_Heli] call BIS_fnc_distance2D < _d_s};//开始攻击运算
- _angle =[_Heli,_tar] call BIS_fnc_dirTo;//获取方位角
- _Heli setDir _angle;
- _a = getpos _Heli select 0;//获取飞机方位信息
- _b = getpos _Heli select 1;
- _c = getpos _Heli select 2;
- _a0 = _a + (_d_s-_d)*sin _angle;//设置预瞄准点
- _b0 = _b + (_d_s-_d)*cos _angle;
- _position_0 = [_a0,_b0,_c];//设置预瞄准位置
- _marker0 = createMarker ["C_0",_position_0];
- _marker0 setMarkerType "mil_dot";
- _marker0 setMarkerColor "ColorRed";
- _d_3D = [_a,_b,_c] vectorDistance _position_0;
- _d_2D = sqrt(_d_3D^2-_c^2);//2D距离
- _angle_y = _d_3D atan2 _c;//仰角
- _angle_f = _angle_y-90;//攻击俯角
- _a1 = _a + 2*_d_s*sin _angle;//设置一次攻击完成路点
- _b1 = _b + 2*_d_s*cos _angle;
- _position_1 = [_a1,_b1,_c];//设置路点位置
- _marker1 = createMarker ["C_1",_position_1];
- _marker1 setMarkerType "mil_dot";
- _marker1 setMarkerColor "ColorRed";
- //设置飞行姿态
- _angle_c//飞机当前俯角
- _v = speed _Heli//飞机当前速度
- _d_u = _d_a/_v*20;
- if(_angle_c>_angle_f)then{
- _angle_a = (_angle_f - _angle_c)/20;//角度增加值1
- for [{_i=0}, {_i<20}, {_i=_i+1}]do{
- _angle_f_a = _angle_c+_angle_a;
- [_Heli,_angle_f_a,0] call BIS_fnc_setPitchBank;
- sleep _d_u;
- };
- }else{
- _angle_a = (_angle_c - _angle_f)/20;//角度增加值2
- for [{_i=0}, {_i<20}, {_i=_i+1}]do{
- _angle_f_a = _angle_c+_angle_a;
- [_Heli,_angle_f_a,0] call BIS_fnc_setPitchBank;
- sleep _d_u;
- };
- };
- //保持飞行姿态并开火
- firing = true;
- nul=[_Heli,14,_gl]execVM"fire.sqf";//开火
- while{firing}do{
- [_Heli,_angle_f_a,0] call BIS_fnc_setPitchBank;
- sleep 0.1;
- };
- //向下一路点运动
- _Heli move _position_1;
复制代码
- private["_Heli","_c","_gl"];
- _Heli = _this select 0; //直升机
- _c = _this select 1;//发射数量
- _gl = _this select 2;//gl
- for [{_i=0}, {_i<_c}, {_i=_i+1}]do{
- _gl action ["USEWEAPON", _Heli, driver _Heli,1];
- sleep 0.7;
- };
- firing=false;//退出保持飞行姿势循环
复制代码
大概搞成这个样子,目前不知道如何得到飞机的当前俯角,另外一旦使用BIS_fnc_setPitchBank,飞机就没有速度了。 |
|