【问题标题】:Pygame - Different sided collision question!Pygame - 不同侧面碰撞问题!
【发布时间】:2010-06-08 18:00:10
【问题描述】:
我正在制作一个 Pygame,基本上是“Breakout”。
我正在使用碰撞,并且想要一种简单的方法来对一个矩形的不同边产生不同的反弹效果。
我目前对球与球棒的碰撞是这样的:
“点”=球; “蝙蝠”=蝙蝠;所以你们都明白了。
if dot.rect.colliderect(bat.rect):<br>
dot.dy *= -1
我想要与每一侧交互的东西,因此可以在球击中球棒一侧时反转 self.dx 值,并且仅在击中顶部时反转 self.dy 值。
谢谢!!! :D
【问题讨论】:
标签:
collision-detection
pygame
【解决方案1】:
您想要的是第二次检查(在 if 内),检查点的 Y 坐标是否与球棒的 Y 坐标相同(也就是说,当球与球棒处于同一高度时,球击中球棒,这意味着它必须从侧面击中),然后反转 X 速度;否则,你已经击中了顶部的球棒,所以反转 Y 速度。
这并不完全正确,但这会让你继续前进。
【解决方案2】:
谢谢!根本没花多少时间。对于其他人,这是我用作指导的代码:
如果 dot.rect.colliderect(bat.rect):
如果 570
效果很好。只有一个问题:对于 Python 碰撞,对象在对碰撞做出反应之前会稍微进入其他对象。因此,您不能将 if 语句的限制设置为精确测量值,因为如果它以这些精确测量值达到顶部,它将触发第一个 if 语句并彻底搞砸。但这非常适合简单。
再次感谢 McWafflestix! :D