欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flash游戲制作:敵人窮追不舍(鼠標(biāo)感應(yīng))的追逐動(dòng)畫教程

  發(fā)布時(shí)間:2015-01-16 15:36:11   作者:佚名   我要評(píng)論
這篇教程是向腳本之家的朋友介紹利用Flash制作敵人窮追不舍的追逐動(dòng)畫游戲方法,教程很不錯(cuò),教程主要運(yùn)用了三角函數(shù),很值得學(xué)習(xí),推薦到腳本之家,喜歡的朋友可以跟著教程一起來(lái)學(xué)習(xí)吧

這篇教程主要是向腳本之家的朋友介紹利用Flash制作敵人窮追不舍的追逐動(dòng)畫游戲方法,教程不是很難,只是將sin,cos函數(shù)的應(yīng)用罷了。。。。會(huì)應(yīng)用的話。。。會(huì)發(fā)現(xiàn)很都游戲的制作都離不開三角函數(shù)。。。。如果實(shí)在不知道三角函數(shù)是什么。。。。自己上網(wǎng)查去。。。

下面我們先來(lái)看看效果圖吧:
 


還有的就是在一定的范圍內(nèi)追逐目標(biāo)。。。。
其實(shí)是計(jì)算出兩點(diǎn)距離d后加一點(diǎn)判斷。。。然后再執(zhí)行移動(dòng)。。。詳細(xì)參考源文件。。。

效果:




。。。講玩。。。。打機(jī)去^_^

 圖1

Rt△ABC,∠C=90度。。。∠A所對(duì)的邊叫a..∠B的對(duì)邊叫b...這不用再由初中知識(shí)說(shuō)起吧- -~
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的值。。。詳細(xì)不想說(shuō)。。。
還有要用到的是鉤股定理。。。
既a*a+b*b=c*c
如下圖:

 

 圖2

d就可以通過(guò)(m.x-m.y)的平方加上(m.y-s.y)的平方的和再開方來(lái)求出
然后用asin(abs(m.y-s.y):d)求出∠1...既s1的值...
繼續(xù)往下看:

 圖3

s1已知....(感覺(jué)在做數(shù)學(xué)題- -~)
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)D3,當(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);
}
詳盡可以看源文件。。。。。請(qǐng)用Flash CS4打開。。。。

效果:


還有的就是在一定的范圍內(nèi)追逐目標(biāo)。。。。
其實(shí)是計(jì)算出兩點(diǎn)距離d后加一點(diǎn)判斷。。。然后再執(zhí)行移動(dòng)。。。詳細(xì)參考源文件。。。

效果:




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

相關(guān)文章

最新評(píng)論