Flash如何制作敌人穷追不舍的追逐动画教程

这篇教程主要向大家介绍利用Flash制作敌人穷追不舍的追逐动画游戏方法,教程不是很难,只是将sin , cos函数的应用罢了 。会应用的话会发现很都游戏的制作都离不开三角函数 。
还有的就是在一定的范围内追逐目标 。
其实是计算出两点距离d后加一点判断 , 然后再执行移动
Rt△ABC,C=90度 。。。A所对的边叫a..B的对边叫b...
sin1=a:c=a/c(对边比斜边)
cos1=b:c=b/c(邻边比斜边)
至于asin就是求sin的反值 。。。sin是求边的比 。。。那么asin就是用比来反求角的值
【Flash如何制作敌人穷追不舍的追逐动画教程】即asin(a:c)=1..
acos就是反求cos的值 。。。
还有要用到的是钩股定理 。。。
既a*a+b*b=c*c
如下图:
d就可以通过(m.x-m.y)的平方加上(m.y-s.y)的平方的和再开方来求出
然后用asin(abs(m.y-s.y):d)求出1...既s1的值...
继续往下看:
s1已知....i就是在1单位时间内移动的距离 。。。。因为sin1=a:c
假设ss=sin(s1)
所以sin(s1)=a:c=a:i=ss,a=ss*i 。
假设cos(s1)=b:c=b:1=cc,c=cc*i 。
还有要注意的一个问题 。。。。就是要计算出移动后的点的坐标 。。。。
。。参照图2
(s.x,s.y)
要去追(m.x , m.y)那个红点 。。。再参照图 , 当红点在蓝点的右上方时即(m.x=s.xm.y=s.y)
蓝点移动到的点的坐标就是 。。。。(s.x+cc*i,s.y+ss*i)
在右下方(m.x=s.xm.y=s.y)
移动后的点(s.x+cc*i,s.y-ss*i)
在左下方时(m.x=s.x,m.y=s.y)
移动后的点(s.x-cc*i,s.y-ss*i)
在左上方时(m.x=s.xm.y=s.y)
移动后点坐标(s.x-cc*i , s.y+ss*i)
源程序:
复制代码
代码如下:
stage.addEventListener(MouseEvent.MOUSE_MOVE,moves);
var i:int=int(q.text);
var mou:Sprite=new Sprite();//用来得到鼠标的坐标
var s1:Number=0;//角
var d:Number=0;//两点的距离
addChild(mou);
function moves(e:MouseEvent){
m.x=mou.mouseX;
m.y=mou.mouseY;
}
stage.addEventListener(Event.ENTER_FRAME,mm);
function mm(e:Event){
d=Math.sqrt(pf(abs(s.x-m.x))+pf(abs(s.y-m.y)));
s1=Math.asin(abs(s.y-m.y)/d);
if(d=i){
if(m.x=s.xm.y=s.y){
s.y+=Math.sin(s1)*i;
s.x+=Math.cos(s1)*i;
}else if(m.x=s.xm.y=s.y){
s.y-=Math.sin(s1)*i;
s.x-=Math.cos(s1)*i;
}else if(m.x=s.xm.y=s.y){
s.x-=Math.cos(s1)*i;
s.y+=Math.sin(s1)*i;
}else if(m.x=s.xm.y=s.y){
s.x+=Math.cos(s1)*i;
s.y-=Math.sin(s1)*i;
}
}else{
s.x=m.x;
s.y=m.y;
}
}
function abs(n:Number){
return(Math.abs(n));
}//计算绝对值
function pf(n:Number){
return n*n;
}//计算平方
//以下是设定速度的按钮
b1.addEventListener(MouseEvent.CLICK,se);
function se(e:Event){
i=int(q.text);
}
还有的就是在一定的范围内追逐目标 。。。。
其实是计算出两点距离d后加一点判断 。。。然后再执行移动 。。。
教程结束,

Flash如何制作敌人穷追不舍的追逐动画教程的详细内容就为您分享到这里,【精彩生活】jing111.com小编为您精选以下内容,希望对您有所帮助: