Flash游戏制作:敌人穷追不舍的动画研究
一路求学网 http://www.16qiuxue.com 阅览次数: 105次 08-24 17:03:49
标签:flash教程制作,flash动画教程,flash教程下载,http://www.16qiuxue.com Flash游戏制作:敌人穷追不舍的动画研究,
Webjx核心提示:所谓关于在Flash中实现追逐,就是敌人对你穷追不舍的效果.
中考完了。。。。终于有时间出来休息。。。原本打算暑假里做一下游戏。。。但实在没这个精力。。。。宁愿去玩其它。。。毕竟一个人做游戏是辛苦麻烦事情。。。从画功到编程。。。所谓关于在Flash中实现追逐。。就是敌人对你穷追不舍的效果。。。。其实只是将sin,cos函数的应用罢了。。。。会应用的话。。。会发现很都游戏的制作都离不开三角函数。。。。如果实在不知道三角函数是什么。。。。自己上网查去。。。

Rt△ABC,∠C=90度。。。∠A所对的边叫a..∠B的对边叫b...这不用再由初中知识说起吧- -~
sin∠1=a:c=a/c(对边比斜边)
cos∠1=b:c=b/c(邻边比斜边)
至于asin就是求sin的反值。。。sin是求边的比。。。那么asin就是用比来反求角的值
即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单位时间内移动的距离。。。。因为sin∠1=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)那个红点。。。再参照图3,当红点在蓝点的右上方时————即(m.x>=s.x && m.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.x,m.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)
源程序:
- 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.x && m.y>=s.y){
- s.y+=Math.sin(s1)*i;
- s.x+=Math.cos(s1)*i;
- }else if(m.x<=s.x && m.y<=s.y){
- s.y-=Math.sin(s1)*i;
- s.x-=Math.cos(s1)*i;
- }else if(m.x<=s.x && m.y>=s.y){
- s.x-=Math.cos(s1)*i;
- s.y+=Math.sin(s1)*i;
- }else if(m.x>=s.x && m.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);
- }
效果:
源文件:ms.rar
还有的就是在一定的范围内追逐目标。。。。
其实是计算出两点距离d后加一点判断。。。然后再执行移动。。。详细参考源文件。。。
效果:
源文件:ms2.rar
。。。讲玩。。。。打机去^_^
,Flash游戏制作:敌人穷追不舍的动画研究
《Flash游戏制作:敌人穷追不舍的动画研究》相关文章
- Flash游戏制作:敌人穷追不舍的动画研究
- › FlashAS3.0实例教程:喷泉动画特效
- › Flash教程:片头加载loading的制作方法
- › 将FlashVars写在JS函数中,实现变量更新与后台同步(推荐)
- › Flash教程:制作卡片翻转动态效果
- › Flash CS3仿真艺术设计教程:封套工具的变形
- › Flash CS3仿真艺术设计教程:封套工具的应用
- › Flash教程:AS制作加载外部.swf影片的视频播放器
- › Flash cs3仿真艺术设计1.15:全新的Flash界面
- › Flash技巧:组合技巧制作吸引人的动画0
- › Flash实例教程:飞机阴影跟随飞机飞翔5
- › Flash AS教程:propertydata问题解决
- › Flash动画制作技巧:动物行走动画制作揭秘
- 在百度中搜索相关文章:Flash游戏制作:敌人穷追不舍的动画研究
- 在谷歌中搜索相关文章:Flash游戏制作:敌人穷追不舍的动画研究
- 在soso中搜索相关文章:Flash游戏制作:敌人穷追不舍的动画研究
- 在搜狗中搜索相关文章:Flash游戏制作:敌人穷追不舍的动画研究
- tag: Flash教程,flash教程制作,flash动画教程,flash教程下载,平面设计教程 - Flash教程