如何使怪物继续左右移动C#XNA

时间:2012-09-22 00:13:23

标签: c# xna

我正在为我的班级在XNA上制作我的第一个游戏。我试图让怪物自动左右移动。我现在共有4个怪物。我试图让他们在屏幕内向左移动。

            //Monster movements
        for (int i = 0; i < numOfMonster; i++)
        {

            if (destinationMonster[i].X >= screenWidth - 60)
            {
                while(destinationMonster[i].X != -10)
                    moveLeft = true;
            }
            else
            {
                moveRight = true;
            }

            if (moveLeft)
            {
                int temp = destinationMonster[i].X;
                temp = destinationMonster[i].X - monsterSpeed;

                //This prevents the object passing the screen boundary
                if (!(temp < -10))
                {
                    destinationMonster[i].X = temp;
                }

                moveLeft = false;
            }

            if (moveRight)
            {
                int temp = destinationMonster[i].X;
                temp = destinationMonster[i].X + monsterSpeed;

                //This prevents the object passing the screen boundary
                if (!(temp > screenWidth - 50))
                {
                    destinationMonster[i].X = temp;
                }
                moveRight = false;
            }
        }

1 个答案:

答案 0 :(得分:0)

您的第一个问题是您的while声明,一旦您输入它,您就不会退出,因为您没有更改X值。如果是我,我会有一个bool数组变量对应于你的每个怪物。一旦怪物到达任何一端的范围,我也会改变你的条件来触发布尔值的改变。这样的事情。

if (destinationMonster[i].X >= screenWidth - 60)
{
    moveRight[i] = false ;
}
else if (destinationMonster[i].X <= -10)
{
    moveRight[i] = true ;
}