2016-04-30 9 views
0

XNAは、関連します1(前進、上)、2(後退、上)、3(前進、下降)、4(後退、下降)移動します。ボールは、それが唯一のラウンドのbegginingで方向だ得ることができるようにゲームは、現時点で演奏されている場合 XNAボールの動き

は私のコードでは、私はチェックしています。 (プレイヤーが勝つか死ぬ場合は、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; 
       } 
      } 
     } 

をそして、まだ私のボールが移動するdoesntの。:あなたがラウンド移動した後、真右に再生されている設定しているので、/私はあなたがラウンドをするときに終了する理由はわからない。したがって、それは1つのフレームが再び更新したことがない移動します。右のスポーンポイント

+0

ブレークポイントを追加してコードをステップ実行しようとしましたか?最初に、 'ballRect'オブジェクトとそのプロパティだけでなく、' isRoundPlayin'フィールドの状態を判断するために、行単位でコードをステップ実行してみます。おそらくあなたの 'X'と' Y'プロパティは更新されていますが、座標が設定された後に 'ballRect'でメソッドや関数などを呼び出す必要がありますか? – gmiley

答えて

0

そののままボールが一つのフレームに移動します。あなたは私たちにあなたが私たちはあなたを助けることができるかもしれない後であるかについてのより多くの情報を与えたが、現時点では、ちょうどあなたのボールが転がりなるだろうif文から=真isRoundPlayingを削除する場合。

+0

@Slubberdgullionさて、私がやった理由はBallMove機能がCPUによって読まれるtrueにするたびにそれを設定せずに、それは乱数foreachのフレームを取得し、ボールには時間がその方向を変えるアルが、それでも奇妙でウィンドウのBUで前方ダウンを行くbecouseボールの動き、私はちょうどピンポンを作りたいと思っていて、各ラウンドボールの開始時にランダムに一方向に移動する必要があり、どちらかのラウンドの開始時にもう一度ランダムな方向をもう一度生成するでしょう。 –

+1

あなたがボールを動かそうとする時間。乱数は、何らかの種類のStartRound関数の内部で一度だけ計算されるべきです。 今、あなたのBallMove関数には2つの責任があります:方向を生成し、ボールを移動します。あなたの移動ボールは、技術的には次のように見えるはずです: ball.Position + = Direction * Speed; または ball.Position + =ベロシティ。 https://blogs.msdn.microsoft.com/alfredth/2009/03/17/pong-a-simple-hands-on-lab-for-xna-game-studio/ そのリンクはどのように上のチュートリアルですポンをOOPのやり方で作る。 – Slubberdegullion

関連する問題