matlab导弹追踪,游戏中导弹跟踪的算法

游戏中导弹追踪的算法

请教大家一个关于势函数用到追踪和拦截的算法

有研究过的能不能指点一下!

Powered By Sunday

Email:happyclub@163.com

var stepAngle:Number = 3;

//角度最大增量

var tempNum:Number = 0;

var radius:Number = 100;

//导弹飞行半径

var M_speed:Number = 3;

//导弹速度(非常量)

var P_speed:Number = 5;

//飞机速度

findToHit(missile, target);

function findToHit(missile, target) {

missile.onEnterFrame = function() {

_root.AngText = stepAngle;

if (missile.hitTest(target.hit)) {

target.play();

missile._visible = false;

delete missile.onEnterFrame;

}

//---------------击中目标

tempNum++;

if (tempNum == 15) {

if (stepAngle == 2) {

if (Math.abs(target._x-missile._x)>radius*2 || Math.abs(target._y-missile._y)>radius*2) {

stepAngle = 3;

}

} else if ((Math.abs(target._x-missile._x)<30 || Math.abs(target._y-missile._y)<30)) {

stepAngle = 2;

}

tempNum = 0;

}

//---------------------改变角度增量-------------------------

P = new Object();

P.x = missile.way._x;

P.y = missile.way._y;

missile.localToGlobal(P);

dx = P.x-missile._x;

dy = P.y-missile._y;

dx1 = target._x-P.x;

dy1 = target._y-P.y;

//----------------------取得向量--------------------------

angle = Math.atan2(dy1, dx1)*180/Math.PI;

//-----------------------取得角度------------------------

angle = angle<=0 ? Math.abs(360+angle) : angle;

M_angle = missile._rotation<0 ? 360+missile._rotation : missile._rotation;

if (Math.abs(M_angle-angle)>stepAngle) {

if (angle-M_angle>180) {

M_angle += -stepAngle;

} else {

M_angle += angle

}

missile._rotation = M_angle;

}

//---------------------改变导弹角度-----------------------

missile._x += dx*M_speed/10;

missile._y += dy*M_speed/10;

//-----------------------导弹移动---------------------

};

}

//-----------------------------追踪---------------------

listen = new Object();

listen.onKeyDown = function() {

onEnterFrame = function () {

if (Key.isDown(Key.RIGHT)) {

target._x += P_speed;

} else if (Key.isDown(Key.LEFT)) {

target._x -= P_speed;

} else if (Key.isDown(Key.UP)) {

target._y -= P_speed;

} else if (Key.isDown(Key.DOWN)) {

target._y += P_speed;

}

};

};

Key.addListener(listen);

//----------------------------键盘控制--------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值