我正在为我的班级在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;
}
}
答案 0 :(得分:0)
您的第一个问题是您的while
声明,一旦您输入它,您就不会退出,因为您没有更改X值。如果是我,我会有一个bool
数组变量对应于你的每个怪物。一旦怪物到达任何一端的范围,我也会改变你的条件来触发布尔值的改变。这样的事情。
if (destinationMonster[i].X >= screenWidth - 60)
{
moveRight[i] = false ;
}
else if (destinationMonster[i].X <= -10)
{
moveRight[i] = true ;
}