キャンバスゲームのスプライトを、衝突するまで常にプレーヤーに向かって移動させようとしています。これを行う関連関数は次の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
、それぞれ敵のX位置、Y位置、回転、および速度です。this.rotation
this.speed
それは一種の動作ですが、敵はプレーヤーから約300ピクセル離れてから、左に向きを変えてプレーヤーから離れ始め、プレーヤーに向かってきた方向から90度の角度で移動します。
これは説明が難しいので、問題を示すのに役立つ簡単なビデオを録画しました:http ://www.screenr.com/AGz7
敵はオレンジ色のスプライトで、プレイヤーは白いスプライトです。
敵をプレイヤーに向かって動かすために私が行っている計算にはどのような問題がありますか?