私はトップダウン シューティング ゲームに取り組んでおり、敵をあてもなくさまよわせたいと思っています。このコードでは、メイン クラスに random(rnd) を含むすべての変数 (回転、位置など) を持つ Enemy クラスがあります。
私の問題は、敵が画面の右上隅から左下に移動し続けることです。ですから、彼らはさまようのではなく、常に特定の方向を向いています。なぜそうなるのか知りたいです。
refresh += gameTime.ElapsedGameTime.TotalSeconds;
if (refresh >= 3)
{
refresh -= 3;
int rndDirection = rnd.Next(4);
if (rndDirection == 1) vektor = new Vector2(0, -1);
if (rndDirection == 2) vektor = new Vector2(0, 1);
if (rndDirection == 3) vektor = new Vector2(1, 0);
if (rndDirection == 4) vektor = new Vector2(-1, 0);
foreach (Enemy enemy in enemies)
{
Vector2 rndDirVec = vektor;
enemy.directionX = enemy.position.X - rndDirVec.X;
enemy.directionY = enemy.position.Y + rndDirVec.Y;
enemy.rotation = (float)Math.Atan2(enemy.directionY, enemy.directionX);
}
}
foreach (Enemy enemy in enemies)
{
enemy.position -= new Vector2((float)(enemy.speed/2 * Math.Cos(enemy.rotation)), (float)(enemy.speed/2 * Math.Sin(enemy.rotation)));
}
私はC#にかなり慣れていないので、C#でどのように機能するかについての知識が不足している可能性があります。誰かが私を正しい方向に向けることができますか?