2013-01-13 79 views
0

下面是一個im工作的項目的代碼,其中敵人在屏幕底部來回移動。在XNA 4.0中新加載的精靈不能正常工作

class enemy1 
{ 
    Texture2D texture; 
    public Vector2 position; 
    bool isAlive = false; 
    Random rand; 
    int whichSide; 
    public enemy1(Texture2D texture, Vector2 position) 
    { 
     this.texture = texture; 
     this.position = position; 
    } 

    public void Update() 
    { 
     if (isAlive) 
     { 
      if (whichSide == 1) 
      { 
       position.X += 4; 

       if (position.X > 1000 + texture.Width) 
        isAlive = false; 
      } 
      if (whichSide == 2) 
      { 
       position.X -= 4; 

       if (position.X < 0) 
        isAlive = false; 
      } 
     } 
     else 
     { 
      rand = new Random(); 
      whichSide = rand.Next(1, 3); 
      SetInStartPosition(); 
     } 
    } 

    private void SetInStartPosition() 
    { 
     isAlive = true; 
     if (whichSide == 1) 
      position = new Vector2(0 - texture.Width, 563 - texture.Height); 
     if (whichSide == 2) 
      position = new Vector2(1000 + texture.Width, 563 - texture.Height); 
    } 

    public void Draw(SpriteBatch spriteBatch) 
    { 
     spriteBatch.Draw(texture, position, Color.White); 
    } 
} 

現在我希望這是幾個敵人來回,但他們開始在歧位置,所以它看起來像有一些敵人在屏幕底部來回。我已經設法在屏幕上畫出其他幾個敵人,除非他們不像第一個敵人。他們只是屏幕上沒有任何移動的圖片。所以現在我所擁有的就是英雄在屏幕的底部移動,並且有一個敵人在屏幕的頂部,另外5個敵人坐在屏幕的頂部什麼都不做。我如何輕易地從一個具有相同行爲的類中隨時添加一個新的精靈,同時又不會讓十億個變量存儲它們?

+0

這裏沒有足夠的信息。你的'Update'和'Draw'方法如何繪製精靈? –

+0

您以同樣的方式*另一個*移動。你可能有一些代碼讓它移動,將它應用到你在數組中獲得的其他精靈。 (順便說一下,有一個** ** **) – user1306322

+0

@安德魯羅素我已經更新了它,希望它不像以前那麼模糊。 –

回答

0

一般來說,在相應的類中包含類似的邏輯是一個好主意,所以如果所有的Sprite都在哪裏做同樣的事情,那麼你所需要做的就是將你的移動代碼放入一個公共方法中,然後調用該方法在Update()之內。

所以,如果您的Sprite類看起來是這樣的:

public class Sprite 
{ 
    private Vector2 Position; 
    public Sprite(Texture2D texture, Vector2 position) 
    { 
     Position = position; 
    } 

    //then just add this 
    public void MoveSprite(int amount) 
    { 
     position.X += amount; 
    } 
} 

現在,對象名稱「雪碧」是很普通的,你將很可能在你的遊戲中的許多「精靈」。

所以你會想要遵循良好的面向對象的做法,也許命名這個特定的精靈有所不同,然後讓它從我們現在看的這個類派生。 (但我不打算爲你做出設計決定)

這是一個模糊的問題,但這是我最好的解答。

+0

我已經更新了它,希望它不那麼模糊。 –