XNA相关:
我需要帮助解决这个小问题,所以我想首先从1到4得到一个随机数,然后根据该数字的值移动球(1(向前,向上), 2(向后,向上),3(向前,向下),4(向后,向下)。
在我的代码中,我检查游戏是否在此刻进行,以便球只能在该回合的开始时获得它的方向。 (如果玩家获胜或死亡,则isRoundPlayin设置为false,当球获得随机方向(1,2,3或4)时,它将设置为true。
bool isRoundPlayin = false; // this is at the top of my Game1.cs
//...
//...
//...
// This is an Update method in Game1.cs:
protected override void Update(GameTime gameTime)
{
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
if (isRoundPlayin == false)
{
BallMove();
isRoundPlayin = true;
}
base.Update(gameTime);
}
//...
//...
//...
// This is BallMove method at the end of Game1.cs script:
public void BallMove()
{
Random randy = new Random();
int randMov = randy.Next(1, 4);
int ball_velocity = 3;
{
if (randMov == 1)
{
ballRect.X += ball_velocity;
ballRect.Y += ball_velocity;
}
else if (randMov == 2)
{
ballRect.X += ball_velocity;
ballRect.Y -= ball_velocity;
}
else if (randMov == 3)
{
ballRect.X -= ball_velocity;
ballRect.Y += ball_velocity;
}
else if (randMov == 4)
{
ballRect.X -= ball_velocity;
ballRect.Y -= ball_velocity;
}
}
}
然而我的球却没动:/在它的产卵点停留
答案 0 :(得分:0)
因为你在移动后设置的是圆形播放。因此它会移动一帧然后再也不会更新。当球移动一帧时,我不确定你为什么要让这一轮结束。如果您在我们可以帮助您之后向我们提供了有关您的内容的更多信息,但是目前,只需从if语句中删除isRoundPlaying = true就可以让您滚动。