所以我要做的是用Pygame创建一个台球桌游戏,球会像这样从台球桌的边缘反弹。在
我有这样一个台球桌的png图像:
白色的部分是透明的,因此当制作一个遮罩,并将球放在透明部分内时,它使用Pygame的sprite.collide_mask(ballsprite, tablesprite)
函数进行碰撞。背景是深绿色。在
但是,sprite.collide_mask
函数返回一个碰撞点,我不知道如何计算球应该朝哪个方向移动,因为我只有球的起点(自上次碰撞以来)和碰撞点。在
我知道我应该计算一个曲面的法向量,但是当Pygame的mask collision没有提供任何函数来做这个的时候,我该怎么做呢?在
我想到的一个解决方案是创建一个近似白色(透明)区域的矩形边界框。但是,如果我将矩形设置为透明,那么就不会发生任何冲突(如果我使用mask方法),如果我将矩形设置为与背景相同的颜色,那么它将始终注册一个碰撞,因为球位于矩形的“rect”中。在
我该如何处理碰撞检测,以及如何处理游戏的方向变化?在
(如果需要,我可以提供我的代码)
我认为最好借助物理库Pymunk创建一个台球游戏。开始可能有点困难,但是你不必自己去实现物理。在
我这里有一个例子,只是为了演示代码的外观。你必须熟悉图书馆才能了解一切。(用WASD键控制球。)
相关问题 更多 >
编程相关推荐