这是我已经有一段时间的问题,但从来没有打扰过。
想象一下,我有两个对象。 1静态,另一个可移动(由玩家)。
那里存在碰撞逻辑?
详细说明;在我的州,我有一个组件的列表。这些可以是NPC,静态对象,玩家,以及几乎所有东西
private List<Component> _gameComponents;
如果我要在播放器课程中进行检查,那么玩家肯定需要知道 _gameComponents 列表,然后我会将检查作为我更新,所以我可以相应地改变速度。
我缺少标准吗?
编辑1:我刚刚读到我应该在更新和渲染之间有一步来检查所有冲突。我会尝试一下,看看会发生什么。
答案 0 :(得分:1)
让每个可以物理处理的组件都继承自interface
之类的自定义ICollidable
。
将每个ICollidable
存储在与您的组件列表分开的List<T>
中。每个ICollidable
即使在第三个集合中也不是静态的。
有一个第三类只处理游戏的整个物理部分并迭代非静态列表。这样,您只能更新可以移动的内容,并且可以将其与包含每个ICollidable
的列表中的每个对象进行比较。
确保仅检查移动物体范围内的物体的碰撞。检查不会碰撞的物体的碰撞是没有意义的。
我总是在更新前检查碰撞,尝试最适合你的方法。