1 回答

TA贡献1111条经验 获得超0个赞
if (IsColliding(player, pirate) == true)
首先,永远不要写那个。说“如果这些碰撞是真的”看起来很业余。说“如果这些东西发生碰撞”:
if (IsColliding(player, pirate))
同样,喜欢if (!whatever)到if (whatever == false)。
其次,集合请使用复数名词。那应该是pirates,不是pirate。您想向读者强调它们的集合。
“海盗”中的错误表示它无法从“列表”转换为“敌人”
你IsColliding需要一个射手和一个敌人,但你给它一个射手和一个敌人列表。 IsColliding不知道如何处理。
您已经知道如何修复它。你想移动每一个敌人,所以你写道:
foreach (Enemy p in pirate)
{
p.Move();
}
现在你想检查每个敌人的碰撞,所以做同样的事情:
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 关注
- 222 浏览
添加回答
举报