2014-04-02 45 views
0

我想做一個小行星遊戲,並設法讓小行星從一側移動到另一側直線到另一側,但是,它運行在無限的直線上,而不是像我想要的那樣從屏幕的所有邊反彈。該移動小行星C#XNA:如何讓小行星從屏幕的各個方向彈跳

代碼:

public void Update(GameTime gameTime) 
    { 
     position.X = position.X + speed; 
     position.Y = position.Y + speed; 

     if (position.X <= 0) 
     { 
      position.X = 0; 
      speed = random.Next(-3,3); 
     } 
     // Right Boundary 
     if (position.X >= 1280 - texture.Width) 
     { 
      position.X = 1280 - texture.Width; 
      speed = random.Next(-3,3); 
     } 
     // Top Boundary 
     if (position.Y <= 0) 
     { 
      position.Y = 0; 
      speed = random.Next(-3,3); 
     } 
     //Bottom Boundary 
     if (position.Y >= 1024 - texture.Height) 
     { 
      position.Y = 1024 - texture.Height; 
      speed = random.Next(-3,3); 
     } 
    } 

我怎麼會去,使其停在一條直線上移動和反彈的屏幕的各邊修改這個代碼。 (位置和速度在超類中聲明,速度的值在小行星類構造函數中聲明) 任何建議,將不勝感激。乾杯

回答

0

首先在隨機的地方創建你的小行星,並將其添加radnom velocity.vector2。所以你的更新功能,你更新像這樣:

position += velocity 

然後使用此功能,如果反彈速度倒退。

private void CheckCollision() 
{ 
    if (position.X < 0){ 
     position.X = 0; 
     velocity.X *= -1; 
    } 
    if (position.X + texture.Width > screenBounds.Width){ 
     position.X = screenBounds.Width - texture.Width; 
     velocity.X *= -1; 
    } 
    if (position.Y < 0){ 
     position.Y = 0; 
     velocity.Y *= -1; 
    } 
}