二维碰撞解决系统

时间:2011-12-05 18:38:44

标签: c# console 2d collision

我在C#的控制台中制作一个简单的2D游戏作为学习项目。但是我似乎无法为碰撞系统提出一个不错的设计。

碰撞的解决对我来说是最大的问题。

基本上可以有以下两组效果的任意组合:
1.删​​除触发对象或图块;
2.删除远程对象或磁贴;
或者什么都不会发生 - 物体只是停止运动(即两者都是无懈可击的东西)。

非常感谢任何有关这方面的想法。

1 个答案:

答案 0 :(得分:1)

如何检测碰撞以及如何对其进行响应是两个完全不同的问题,您应该将它们分开。

最简单的方法是在基础游戏对象中使用虚拟方法来响应碰撞:

class GameObject
{
    virtual protected void OnCollision(GameObject withObject) { }
}

在碰撞检测系统中,只要两个物体发生碰撞,只需在两个物体上引发碰撞事件:object1.OnCollision(object2);object2.OnCollision(object1)

您很快就会意识到,这可能会在某些时候变得混乱,并希望了解多个调度以及如何在不支持它的语言上模拟它。