我想学习如何在游戏开发中为两个物体碰撞的情况创建良好的面向对象(OO)设计实践。
假设我有一个SpaceShip类和一个Meteor类。 当Meteor与SpaceShip相撞时,SpaceShip将被摧毁。
问题:应该将检查是否发生Meteor与SpaceShip碰撞以及碰撞解决方法(摧毁SpaceShip)的方法放在哪个类中? 是在SpaceShip类还是Meteor类中? 或者我应该将其放在另一个类中,例如GameArea或GameController类中?
注意:为简单起见,假设Meteor和SpaceShip以图像资源的形式存在。 我习惯使用Java语言,但其他语言也可以。
GameController
(或者任何管理游戏区域的类)中实现碰撞检测,并在Meteor
和SpaceShip
(以及任何可能与物体发生碰撞的其他对象)上添加一个collidedWithObject(GameObject theObject)
方法,用于通知对象发生了碰撞。 - aroth