私は単純なタワーディフェンスを書いています、そして私は私のタワーが敵を撃たなければならないところに少し立ち往生しています。
このコードで:
void Bullet::move(int x, int y, int speed)
{
Punkt delta = {(x + speed) - this->x, (y + speed) - this->y};
if (abs(delta.x) > 1 && abs(delta.y) > 1)
{
this->x += delta.x / this->speed;
this->y += delta.y / this->speed;
}
else
{
this->dead = true;
}
}
ここで、メソッド引数はターゲットの位置と速度です。弾丸はターゲットに到達するまでベクトルに沿って移動するはずですが、ターゲットが移動しているため、ベクトルが変化します。今のところ、弾丸はこのようになります(黒は塔、青は弾丸、赤は敵です)
そして、問題は、私の弾丸がすでに移動したものをターゲットにしていることです。私の質問は、このコードを改善して正しく機能させる方法です。ベクトルや弾道学に頭を包む方法がわからないので、シンプルにしてくれてありがとう。