さて、私はプレイヤーが何人かの敵に追われている javascript/html キャンバス ゲームを作りたいと思っています。少し「調査」した後、彼女は私のモンスター (敵) クラスの最も重要な部分です。
this.UpdateAngle = function() {
this.dx = this.x - player.x;
this.dy = this.y - player.y;
this.angle = Math.atan2(this.dy, this.dx) * 180 / Math.PI;
if (this.angle < 0) {
this.angle += 2 * Math.PI;
}
}
this.UpdateSpeed = function() {
this.speedX = this.speed * Math.cos(this.angle);
this.speedY = this.speed * Math.sin(this.angle);
}
this.Move = function() {
this.UpdateAngle();
this.UpdateSpeed();
this.x += this.speedX;
this.y += this.speedY;
}
つまり、ここでやろうとしていたのは、敵からプレイヤーまでの角度を計算し、 と を使用しatan2()
て x 軸と y 軸でどれだけ移動する必要があるかを計算することでした。速度と角度を計算して、移動しただけです。計算されたピクセル。cos()
sin()
プレイヤーを動かすまでは、これはすべてうまく機能しているように見えますが、敵は奇妙な方向に動き始めます。何が悪いのかわかりません。これがどのように行われるのかを誰かが教えてくれたら最高です。:D
ここで実際の動作を見ることができます。*PremierBromanov の提案でコードを更新しました。