1
3
碰撞检测不应该在您的球类中进行,因为它需要了解游戏中的所有其他对象。 想象一个有很多物体的射手,想想如果每个物体都试图自己计算碰撞会发生什么。
玩得高兴。。。:) |
2
2
像你描述的那样上球类确实是个好主意。这样你就可以复制它,就像在一些“突破”游戏中一样,如果你想产生两个或更多的球——或者如果你想在另一个游戏中重用这些代码。你也可以有一个具有类似X,Y坐标的桨类(或者如果球和桨都来自一个“ScreenObject”类,如果它们共享许多类似的成员)。拨片可以读取共享变量,该变量由接收用户输入的线程/事件更新。 在Ball类中,可以基于全局可访问的值(如屏幕尺寸范围)进行简单的碰撞,例如与墙的碰撞。当特定的墙被击中时,更新程序可以简单地反转一个速度分量。可以在Ball类中定义和设置委托/回调,以便在球反弹时播放声音。同样,拨片的更新可以检查屏幕大小,这样你就不能将拨片移出屏幕。
对于有很多物体的游戏,你不想综合检测每一个,只是最近的一个。在这种情况下,“管理器”变得更像一个“场景管理器”,它在X和Y方向上保持对象的链接列表。当对象经过其他对象时,它们交换列表中的指针,因此列表始终保持排序。这样,对于任何一个给定的对象,我们都可以立即知道左/右/上/下的对象,所以我们只需要对这些对象进行碰撞检查。。。节省大量时间,使游戏以最大速度运行。不过,也许你还没到这一步!
|
3
1
对于pong,简单的矩阵运算就足够了。如果只有一个ball类,并且只用于保存元组,则不需要它。 |
heltonbiker · 在变形矩形网格中进行命中测试/查找交点 6 年前 |
Vuxer · 为什么我的乒乓球比赛中的球会这样? 6 年前 |
Hope · R中的碰撞检测和接近 7 年前 |
crazicrafter1 · Pygame列表冲突 7 年前 |
carlos cerda diaz · 如何避免重复? 7 年前 |
BeginnerDev · 如何将矩形添加到数组中? 7 年前 |
Red · Java命中检测/对象之间的碰撞 7 年前 |
Jack Richards · Sprite套件Swift中的碰撞检测 7 年前 |