我正在开发一款自上而下的射击游戏,我希望我的敌人漫无目的地四处游荡。在这段代码中,我有一个 Enemy 类,其中包含所有变量(旋转、位置等),包括主类中的 random(rnd)。
我的问题是敌人不断从屏幕的右上角移动到左下角。所以他们不是四处游荡,而是总能找到某个方向。我想知道为什么会这样。
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# 还很陌生,所以我可能缺乏一些关于其中事物如何运作的知识,所以有人能指出我正确的方向吗?