用户名: 密码: 验证码:           网站地图  高级搜索  RSS订阅  收藏本站
您的位置:主页>动画制作>Flash>

[Flash教程]Flash中简单跟踪弹的算法

[ 来源: | 更新日期:2006-1-8 19:36:00 | 评论 0 条 | 我要投稿 ]

我看到的一些作跟踪弹的方法,都是要用向限的转换,还要考虑子弹和飞机在某个方向保持平行时做一些调整,个人认为有些烦。而我这个用方向向量来计算跟踪弹的方式,无论坐标系如何变,相关的计算只有一个,把速度在X,Y方向的“单位方向向量”计算出来,即可。 学过向量的朋友应该都知道,单位方向向量(x,y),其中的X就是这个向量与X轴的夹角的余弦值,而Y就是正弦值,还等什么,马上行动。 核心代码如下: 字串8

字串9

function Getdistance(mc1, mc2) {//计算了出二者———子弹与我机的距离 字串7

return Math.sqrt((mc1._x-mc2._x)*(mc1._x-mc2._x) (mc1._y-mc2._y)*(mc1._y-mc2._y)); 字串6

} 字串4

function StardandlizeAngle(mc1, mc2) {//计算出子弹速度的方向向量。 字串4

var l = Getdistance(mc1, mc2);

字串6

mc1.VdirectionX=(mc2._x-mc1._x)/l;//单位方向向量中的X mc1.VdirectionY=(mc2._y-mc1._y)/l;//单位方向向量中的Y 字串9

} 字串5

function doMove(mc){//算出VX,VY,通过mc._x =mc.vx //及mc._y =mc.vy;实现动态效果

字串2

字串9

字串8

mc.vx=mc.v*mc.VdirectionX;

字串9

mc.vy=mc.v*mc.VdirectionY; 字串4

mc._x =mc.vx;

字串6

mc._y =mc.vy; 字串1

} _root.onEnterFrame=function(){

字串4

StardandlizeAngle(bullet,plane); 字串9

doMove(bullet);

字串9

} 字串1

PS:其中对象的属性我是另个在一段AS脚本中用mc.prototype.属性(方法)=function(){[ } 个人比较喜欢用这种方式,尤其是一些物理属性频烦使用时,这就好比是一个小的物理属性库了,非常的方便。

Tags:
责任编辑:
您的评论
用户名:新注册) 密码: 匿名评论 [所有评论]