簡體   English   中英

AS3:對角線運動

[英]AS3: diagonal movement

我正在編寫一個flash游戲,我制作了一些點(x和y位置),一些影片剪輯必須遵循。 那些影片剪輯有一定的速度(他們現在制作5像素的步長)。 當我想要水平或垂直移動它們時,一切都很好,我必須添加或刪除這些剪輯的x或y的5個像素。 但有時他們必須對角移動,現在這很復雜。

我在做什么:

var angle:Number = Math.atan2(nextPoint.y - this.y, nextPoint.x - this.x) * 180 / Math.PI;
var xstep:Number = Math.cos(angle) * this.speed;
var ystep:Number = Math.sqrt(Math.pow(this.speed, 2) - Math.pow(xstep, 2));

this.x += xstep;
this.y += ystep;

它只是代碼的一小部分,但我認為這就是你所需要的。 基本上,這使我的movieclip做了一小步(this.speed(目前設置為5)像素)。

如果當前點和下一個點具有相同的y位置,則它可以正常工作。 當他們不這樣做時,它不起作用。 角度最初是正確的,但它會慢慢減小(而它應該保持不變)。 我不知道它是不是以正確的方式計算的角度,或者它是x和y的步驟,但它是其中之一,我敢肯定。

試試這個:

var angle:Number = Math.atan2(nextPoint.y - this.y, nextPoint.x - this.x);
var xstep:Number = Math.cos(angle) * this.speed;
var ystep:Number = Math.sin(angle) * this.speed;

因為cos弧度為角度運行,所以您無需轉換為度數。 計算角度的y分量使用sin ,因此它應該類似於x。 我無法對此進行測試,但ystep可能會向后,可能需要乘以-1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM