0

我正在为我的班级制作我在 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;
            }
        }
4

1 回答 1

0

你的第一个问题是你的while陈述,一旦你输入它,你就不会退出,因为你没有改变你的 X 值。如果是我,我会有一个bool对应于你的每个怪物的数组变量。一旦怪物达到任一端的范围,我还将更改您的条件以触发布尔值的更改。像这样的东西。

if (destinationMonster[i].X >= screenWidth - 60)
{
    moveRight[i] = false ;
}
else if (destinationMonster[i].X <= -10)
{
    moveRight[i] = true ;
}
于 2012-09-22T02:55:54.047 回答