[英]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.