私の暴徒AIに問題を抱えている
それは私が望むものの反対をすることを除いて、それが間違った方向に180度回転することを意味する、ある点まで機能します
Target = playerST.Posistion;
Vector2 trivial;
trivial.X = Posistion.X - Target.X;
trivial.Y = Posistion.Y - Target.Y;
instant = ((float)Math.Atan2(trivial.Y, trivial.X)) + 3.141592f;
これにより、ターゲットがどこにあるかがわかり、回転する必要のある数値が計算されます
ラジアンでのプラス3.1などは180度のようなものです。この方法で計算すると、最小値は-3.141、最大値は3.141になりますが、敵の回転は0から6.28で行われ、3.141を追加するとインスタント=になります。 3.141だけではなく、敵の回転範囲
とにかくこれは私が立ち往生している部分です...実際の回転
// irrelevant
if (attack == true)
{
Vector2 modelVelocityAdd = Vector2.Zero;
modelVelocityAdd.Y = -(float)Math.Sin(rotation);
modelVelocityAdd.X = -(float)Math.Cos(rotation);
modelVelocityAdd *= (0.00002f * speed);
if ((((rotation) + 0.2f)) < instant && (rotation - 0.2f) > instant)
{
modelVelocity += modelVelocityAdd;
}
// not so irrelvant and needs fixing!
if (instant < rotation )
{
rotation -= rotationspeed / 2000;
}
else if (rotation < instant)
{
rotation += rotationspeed / 2000;
}
だから私の問題は、それが間違った方向に180度回転するのを止めて、正反対の方向に向けるのではなく、実際にプレーヤーに向けさせる方法です。
船が閉じ込められて、たとえば5度からマイナス5度の間を行ったり来たりするので、簡単にはできません。
if (instant < rotation )
{
rotation += rotationspeed / 2000;
}
else if (rotation < instant)
{
rotation -= rotationspeed / 2000;
}
助けてくれてありがとう