0
我正在嘗試創建一個屏幕保護程序,並在其內容中有一個讓我們稱之爲'主要魚'的游泳場所。我設法做了主要魚游泳的編碼部分。現在我已經添加了更小的魚,這是我能夠做到的主要魚類,但是我怎樣才能讓小魚停留在主要魚類的後面,因爲它們不會與主魚類或其他魚類相撞。這是我迄今所做AS3:避免碰撞
這是魚類(即下一個)
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.geom.Point;
public class Fish extends MovieClip
{
var speed:Number = 3;
var target:Point;
public function Fish()
{
// constructor code
addEventListener(Event.ENTER_FRAME, update);
}
function update(e:Event)
{
//Point fish at main fish
var dx = MovieClip(parent).mainfish01.x - x;
var dy = MovieClip(parent).mainfish01.y - y;
var angle = Math.atan2(dy,dx)/Math.PI * 180;
rotation = angle;
//Move in the direction the fish is facing
x = x+Math.cos(rotation/180*Math.PI)*speed;
y = y+Math.sin(rotation/180*Math.PI)*speed;
//Calculate the distance to target
var hyp = Math.sqrt((dx*dx)+(dy*dy));
}
}
}
前檢查的距離你不應該計算真正的距離,而是使用距離的平方,因爲這樣你可以避免計算一個平方根,這是一個很昂貴的函數,但是對於幾條魚,你不會注意到有什麼不同。 – Daniel
謝謝丹尼爾,它像一個魅力。最近我發現了一些看起來非常棒的轉向行爲。我只需要坐下來研究它,但是謝謝你。 – Saf