我做了子彈地獄遊戲。一切按預期工作。由於我從未有過任何遊戲設計課程等,我對代碼有所擔憂(質量上的明智和設計上的明智)。玩家,敵人和子彈互動(遊戲設計)
我所做的是將所有對象存儲在全局向量中(我知道它是壞的)。如
EnemiesArray
bulletsArray //敵人的子彈
playerBullets //玩家子彈
而對於碰撞我有更新檢查碰撞
for (auto playerBullet : playerBullets)
{
for(auto enemy : EnemyArray)
{
if(enemy->checkCollision(playerBullet->bulletSprite->getPosition()))
{
//collided
}
}
}
因此,當一個經理有子彈與敵人的碰撞,很多事情都會受到影響。例如背景對象移動,播放器獲取xp和Hud更改等。
管理器包含對bg hud和它需要的所有內容的引用。
問題1:
如何擺脫全局向量。 (它允許我從代碼中的任何地方創建子彈/敵人)。
問題2: 是否應該有管理員檢查子彈碰撞?或者對象本身應該檢查它?如果是的話,我怎麼給敵人的子彈參考。
問題3: 管理器管理的對象太多,像我提到的。 (對不起,我聽起來很愚蠢)。我聽到一位經理應該管理一種工作。
對於問題1:讓我說我創建一個對象的級別。那麼我必須爲敵人添加所有對象。這很好。但是當敵人射擊的時候。 如何將子彈添加到關卡?是否所有的敵人都保持了關卡的水平? –
對於問題1:當敵人射出新子彈時,必須將其添加到敵人子彈的矢量中。這些應該分開,我的意思是玩家的子彈和enemie應該有自己的容器,在檢查碰撞時更容易迭代。當來自敵人的子彈與玩家接觸時,應該發生適當的事情,結果必須從矢量中刪除該子彈。通過這種方式,你的遊戲包含3個階段,這意味着移動物體,拍攝和檢查碰撞。 – MJey