1 回答

TA貢獻1111條經(jīng)驗 獲得超0個贊
if (IsColliding(player, pirate) == true)
首先,永遠不要寫那個。說“如果這些碰撞是真的”看起來很業(yè)余。說“如果這些東西發(fā)生碰撞”:
if (IsColliding(player, pirate))
同樣,喜歡if (!whatever)到if (whatever == false)。
其次,集合請使用復數(shù)名詞。那應該是pirates,不是pirate。您想向讀者強調(diào)它們的集合。
“海盜”中的錯誤表示它無法從“列表”轉(zhuǎn)換為“敵人”
你IsColliding需要一個射手和一個敵人,但你給它一個射手和一個敵人列表。 IsColliding不知道如何處理。
您已經(jīng)知道如何修復它。你想移動每一個敵人,所以你寫道:
foreach (Enemy p in pirate)
{
p.Move();
}
現(xiàn)在你想檢查每個敵人的碰撞,所以做同樣的事情:
foreach (Enemy p in pirate)
{
if (IsColliding(player, p)) { ... }
}
您最終將學習的一項高級技術是對序列使用查詢推導式:
var collisions = from p in pirate
where IsColliding(player, p)
select p;
foreach (Enemy p in collisions)
{
... handle the collision...
}
但是在嘗試跑步之前先學會走路。
- 1 回答
- 0 關注
- 235 瀏覽
添加回答
舉報