【发布时间】:2023-03-24 00:55:01
【问题描述】:
我正在制作一个关于射击敌人和避开障碍物的简单游戏,但我在检测碰撞时遇到了问题,因为我为每种类型的游戏对象(玩家、敌人、障碍物、掉落、子弹、等等)。
class Player { Vector3 pos; ... }
class Enemy { Vector3 pos; ... }
class Obstacle { Vector3 pos; ... }
...
boolean doCollide (Object a, Object b)
{
if ( a.pos.x + a.size.w >= b.pos.x ) { ... }
...
}
它不会工作,因为 a 没有“pos”等,所以我该怎么做才能让它适用于每个班级?我读过关于接口的文章,但我真的不知道它对我有什么帮助。
【问题讨论】:
-
没有。不要使用
Object,不好的做法。创建一个基类,我设计了一切,总有办法。 -
花 2 小时阅读“游戏编程模式”(Nystrom,2014)的相关部分。他讨论了一些关于游戏对象类及其交互的概念,您可能会发现这些概念非常有用。