從我剛纔的問題,它現在已經解決了攜帶上: Issue with Pointers (Only in Release Build)矢量數據被重置?
進行必要的更改我創建的敵人的方式後,我也不得不改變對象如何等與敵人明顯的原因互動。 但現在看來我又犯了一個錯誤:/
在這裏我有一些代碼用於創建我的投射物來擊中敵人,但是這個代碼雖然做了相反的處理並且在短時間內阻止了敵人的時間。
if ((enemies[numOfEnemies].position.x + (enemies[numOfEnemies].width/2) > bullet.position.x &&
enemies[numOfEnemies].position.x < bullet.position.x + bullet.width) &&
(enemies[numOfEnemies].position.y + (enemies[numOfEnemies].height/2) > bullet.position.y &&
enemies[numOfEnemies].position.y < bullet.position.y + bullet.height) &&
enemies[numOfEnemies].speed != 0)
{
//We've collided with the wall, stop the enemy
enemies[numOfEnemies].previousSpeed = enemies[numOfEnemies].speed;
enemies[numOfEnemies].speed = 0;
}
正如你所看到的,簡單的東西。但似乎敵人矢量不斷重置,不確定這裏發生了什麼。之前,再次工作得非常好,從指針變成矢量現在已經產生了這個問題:/。
void Towers::Update(std::vector<Enemies> enemies, SDLib& lib, Map cMap)
多數民衆贊成我是如何通過向我的職能向量。矢量是否超出了範圍,然後被自動清除?如果是這樣,那麼我需要做些什麼來分配我對實際數據所做的更改?
任何幫助表示讚賞!
你是什麼意思「不斷重置」?你能發佈一些完整的代碼來證明問題嗎? –
'numOfEnemies'給我建議它是向量中的敵人數量。如果是這樣,它絕對不是一個有效的索引。但是,這可能只是一個命名不清的範圍內的索引。 – celtschk
此外,您的編碼風格很糟糕(可能)不太理想。您應該將索引操作符的調用次數減少到最低限度 - 只需將局部變量(可能是引用)中的'enemies [numOfEnemies]'的值存儲起來,然後在成員函數中引用它。 – gwiazdorrr