日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

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

發(fā)布時(shí)間:2023/12/24 综合教程 42 生活家
生活随笔 收集整理的這篇文章主要介紹了 Flash如何制作敌人穷追不舍的追逐动画教程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  這篇教程主要向大家介紹利用Flash制作敵人窮追不舍的追逐動(dòng)畫(huà)游戲方法,教程不是很難,只是將sin,cos函數(shù)的應(yīng)用罷了。會(huì)應(yīng)用的話會(huì)發(fā)現(xiàn)很都游戲的制作都離不開(kāi)三角函數(shù)。

  還有的就是在一定的范圍內(nèi)追逐目標(biāo)。

  其實(shí)是計(jì)算出兩點(diǎn)距離d后加一點(diǎn)判斷,然后再執(zhí)行移動(dòng)  

  Rt△ABC,∠C=90度。。。∠A所對(duì)的邊叫a..∠B的對(duì)邊叫b...

  sin∠1=a:c=a/c(對(duì)邊比斜邊)

  cos∠1=b:c=b/c(鄰邊比斜邊)

  至于asin就是求sin的反值。。。sin是求邊的比。。。那么asin就是用比來(lái)反求角的值

  即asin(a:c)=∠1..

  acos就是反求cos的值。。。

  還有要用到的是鉤股定理。。。

  既a*a+b*b=c*c

  :  

  d就可以通過(guò)(m.x-m.y)的平方加上(m.y-s.y)的平方的和再開(kāi)方來(lái)求出

  然后用asin(abs(m.y-s.y):d)求出∠1...既s1的值...

  繼續(xù)往下看:  

  s1已知....i就是在1單位時(shí)間內(nèi)移動(dòng)的距離。。。。因?yàn)閟in∠1=a:c

  假設(shè)ss=sin(s1)

  所以sin(s1)=a:c=a:i=ss,a=ss*i。

  假設(shè)cos(s1)=b:c=b:1=cc,c=cc*i。

  還有要注意的一個(gè)問(wèn)題。。。。就是要計(jì)算出移動(dòng)后的點(diǎn)的坐標(biāo)。。。。

  。。參照?qǐng)D2

  (s.x,s.y)

  要去追(m.x,m.y)那個(gè)紅點(diǎn)。。。再參照?qǐng)D,當(dāng)紅點(diǎn)在藍(lán)點(diǎn)的右上方時(shí)————即(m.x>=s.x && m.y>=s.y)

  藍(lán)點(diǎn)移動(dòng)到的點(diǎn)的坐標(biāo)就是。。。。(s.x+cc*i,s.y+ss*i)

  在右下方(m.x>=s.x && m.y<=s.y)

  移動(dòng)后的點(diǎn)(s.x+cc*i,s.y-ss*i)

  在左下方時(shí)(m.x<=s.x,m.y<=s.y)

  移動(dòng)后的點(diǎn)(s.x-cc*i,s.y-ss*i)

  在左上方時(shí)(m.x<=s.x && m.y>=s.y)

  移動(dòng)后點(diǎn)坐標(biāo)(s.x-cc*i,s.y+ss*i)

  源程序:

  復(fù)制代碼

  代碼如下:

  stage.addEventListener(MouseEvent.MOUSE_MOVE,moves);

  var i:int=int(q.text);

  var mou:Sprite=new Sprite();//用來(lái)得到鼠標(biāo)的坐標(biāo)

  var s1:Number=0;//角

  var d:Number=0;//兩點(diǎn)的距離

  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));

  }//計(jì)算絕對(duì)值

  function pf(n:Number){

  return n*n;

  }//計(jì)算平方

  //以下是設(shè)定速度的按鈕

  b1.addEventListener(MouseEvent.CLICK,se);

  function se(e:Event){

  i=int(q.text);

  }

  還有的就是在一定的范圍內(nèi)追逐目標(biāo)。。。。

  其實(shí)是計(jì)算出兩點(diǎn)距離d后加一點(diǎn)判斷。。。然后再執(zhí)行移動(dòng)。。。

  教程結(jié)束,以上就是flash敵人窮追不舍(鼠標(biāo)感應(yīng))的追逐動(dòng)畫(huà)教程,希望能對(duì)大家有所幫助!

總結(jié)

以上是生活随笔為你收集整理的Flash如何制作敌人穷追不舍的追逐动画教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。