我试图让我的画布游戏中的精灵不断向玩家移动,直到它发生碰撞。执行此操作的相关函数是update()
函数:
Enemy.prototype.update = function(playerX, playerY) {
// Rotate the enemy to face the player
this.rotation = Math.atan2(this.y - playerY, this.x - playerX) - 2.35;
// Move in the direction we're facing
this.x += Math.sin(this.rotation) * this.speed;
this.y += Math.cos(this.rotation) * this.speed;
}
this.x
, this.y
,this.rotation
和this.speed
分别是敌人的 X 位置、Y 位置、旋转和速度。
它有点工作,但是敌人距离玩家大约 300 像素,然后开始转向左侧并远离玩家,与它朝向玩家的方向成 90 度角。
由于这有点难以解释,我录制了一个快速视频来帮助说明问题:http ://www.screenr.com/AGz7
敌人是橙色精灵,玩家是白色精灵。
我正在做的让敌人向玩家移动的计算有什么问题?