2013-03-13 89 views
1

我試圖讓我的帆布遊戲中的精靈不斷向玩家移動,直到碰撞。執行此相關的功能是update()功能:敵方精靈走向玩家的一條奇怪的道路

​​

this.xthis.ythis.rotationthis.speed是X位置,Y位置,旋轉和速度的敵人,分別。

這是一種作品,但是敵人距離玩家約300像素,然後開始轉向左側並離開玩家,在朝向玩家方向90度的角度。

由於這是一種很難解釋,我錄一個簡短的視頻來幫助顯示問題:http://www.screenr.com/AGz7

敵人是橙色精靈和玩家是白茫茫的一片。

我正在做的使敵人向玩家移動的計算有什麼樣的問題?

回答

2

從之前書寫角度/移動代碼,這可能是錯誤的:

而不是 this.rotation = Math.atan2(this.y - playerY, this.x - playerX) - 2.35;

是否

this.rotation = Math.atan2(playerY - this.y, playerX - this.x);

給你正確旋轉?

推理:不要使用魔術常量,試圖找出爲什麼你的公式是錯誤的。

而不是

this.x += Math.sin(this.rotation) * this.speed; 
this.y += Math.cos(this.rotation) * this.speed; 

嘗試

this.x += Math.cos(this.rotation) * this.speed; 
this.y += Math.sin(this.rotation) * this.speed; 

推理:如果你的角度爲0 =東基於(如果你使用的數學庫函數,他們在默認情況下),那麼一個角度0你想要最大的水平運動和沒有垂直運動 - cos(0)= 1和sin(0)= 0。

+0

'-2.35'在那裏,因爲精靈開始在錯誤的旋轉,這只是一個快速修復現在但它是正確的:)另外,噸他修復工作。謝謝!我現在看到,雖然我一直使用錯誤的方法讓精靈跟隨玩家,因爲他們在玩家周圍移動而不是直接朝着玩家移動。 – 2013-03-13 02:25:26

+0

@JamesDawson,通過交換cos和sin基本上你正在做的就是使怪物的目標相對於'他們想去的地方'成90度角。所以他們會圍成一圈並不奇怪。 – Patashu 2013-03-13 02:26:49