Flash中简单跟踪弹的算法

2016-01-29 12:53 52 1 收藏

Flash中简单跟踪弹的算法,Flash中简单跟踪弹的算法

【 tulaoshi.com - Flash 】

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)

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

return Math.sqrt((mc1._x-mc2._x)*(mc1._x-mc2._x)+(mc1._y-mc2._y)*(mc1._y-mc2._y));

}

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

var l = Getdistance(mc1, mc2);

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

}

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)

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

mc.vy=mc.v*mc.VdirectionY;

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)

mc._x+=mc.vx;

mc._y+=mc.vy;

} _root.onEnterFrame=function(){

StardandlizeAngle(bullet,plane);

doMove(bullet);

}

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

来源:http://www.tulaoshi.com/n/20160129/1487976.html

延伸阅读
标签: flash教程
在flash中有一个random函数。它可以随机产生出一个0-1之间的数字,我们可以通过这个函数与数组相结合,非常简便地实现对一组对象的穷举。 以下是一个非常简单的实例: temp_array = new Array(); for(i = 0;i<100;i++){    temp_array[i]=i; } while(temp_array.length 1){    trace(temp_array.splice(i...
  模仿C 能判断#include;main();int;char;for;printf;scanf;{};  private   //在str中找第一个单词 如果 找到则返回第一个单词的地址(phrase)和下一个要分析单词的入口(nextptr)    //如果str是空串则返回false     function phrase(str:string;phras...
<script language="JavaScript" <!-- /********************************************************** * md5.js * * A JavaScript implementation of the RSA Data Security, Inc. MD5 * Message-Digest Algorithm. * * Copyright (C) Paul Johnston 1999. Distributed under the LGPL. ***********************************************...
在MySQL 中,只有一种 Join 算法,就是大名鼎鼎的 Nested Loop Join,他没有其他很多数据库所提供的 Hash Join,也没有 Sort Merge Join。顾名思义,Nested Loop Join 实际上就是通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。如果还有第三个参与 Join,则再通...
Function UserCode(password As String) As String '用户口令加密     Dim il_bit, il_x, il_y, il_z, il_len, i As Long     Dim is_out As String     il_len = Len(password)     il_x = 0     il_y = 0     is_out = ""    ...

经验教程

280

收藏

56
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部