2012-11-21 101 views
1

我正在創建一個2D射擊遊戲,並且我想在某個射彈對象與其發生碰撞時增加某些敵人的大小。 我可以通過僅改變下面如何在XNA + C#中動態縮放精靈的大小?

enemyAnimation.Initialize(enemyTexture, Vector2.Zero, 47, 61, 8, 30, Color.White, **2f**, true); 

浮點值然後我可以浮球改變爲可變比例在代碼精靈,並且當碰撞發生時更新變量。唯一的問題是,敵人的規模確實發生了變化,但只是對於新產生的敵人以及所有敵人。這是顯而易見的,但我想做的事情(如果可能的話)是改變發生碰撞的敵人的大小,只有那個敵人...

任何關於我如何去做的想法這個?

編輯:

好吧,我有點困惑。我在我的Enemy類中創建了一個名爲scaleSize的浮點值。然後在我的Game1.cs碰撞檢測我運行一個循環,通過我的敵人的名單迭代對象

// Projectile vs Enemy Collision 
      for (int i = 0; i < projectiles.Count; i++) 
      { 
       for (int j = 0; j < enemies.Count; j++) 
       { 
        // Create the rectangles we need to determine if we collided with each other 


        // Determine if the two objects collided with each other 
        if (rectangle1.Intersects(rectangle2)) 
        { 

         enemies[j].Health -= projectiles[i].Damage; 
         projectiles[i].Active = false; 

          *enemies[j].scaleSize += 1f;* 
        } 
       } 
      } 

現在我意識到scaleSize沒有被正確初始化。但我不確定我應該在哪裏改變這一點。正如前面的代碼示例中所示,浮動值正在改變敵人的比例,但是通過動畫類,如果我改變它,它會改變所有敵人(afaik)。 我很抱歉,因爲我知道這非常含糊,但我無法將我的頭圍繞在我應該設置敵人縮放尺寸的位置。創造它的敵人級別是好的,但它並沒有參考敵人的實際規模。

+0

你是如何跟蹤敵人的位置,你有一個類,你可以添加更多的字段或您使用一個枚舉的向量? – bendataclear

+0

我有一個敵人類與這個信息。如果敵人離開屏幕或者與玩家或拋射物體發生碰撞,則會被殺死。敵人的位置也儲存在這裏。目前遵循Jon的建議併爲該課程增加規模價值。 – UserBruiser

+0

您可能始終將您的比例初始化爲1,這將是一個非常安全的假設 – emartel

回答

3

將比例值存儲在敵人級別中。這樣,你的Enemy對象的每個實例都會有自己的比例值。

如果你沒有敵人級,你應該創建一個。你也可以儲存敵人紋理,讓每個敵人都有自己的外表。

編輯

您最有可能使用的不是您的Draw方法正確的比例值。舉個例子敵人類:

class Enemy 
{  
    protected float Scale { get; set; } 
    protected Texture2D Texture { get; set; } 
    protected Vector2 Position { get; set; } 

    public Enemy() 
    { 
     Scale = 1f; 
    } 

    public void Hit() 
    { 
     Scale = 2f; 
    } 

    public void Draw(SpriteBatch spriteBatch) 
    { 
     spriteBatch.Draw(Texture, Position, null, Color.White, 0, Vector2.Zero, Scale, SpriteEffects.None, 1); 
    } 
} 

使用示例:

Enemy A = new Enemy();  
A.Hit();  
A.Draw(spriteBatch); 
+0

我有一個敵人的課程,我現在會嘗試。感謝您的快速答覆。 – UserBruiser

+0

嗨,喬恩,我用更多的信息編輯了我的帖子(儘可能模糊)。有任何想法嗎? – UserBruiser

+1

檢查我的編輯。嘗試遵循相同的模式,它應該工作。 – jgallant