Python pygame中的反弹函数

Python pygame中的反弹函数,python,pygame,bounce,Python,Pygame,Bounce,嘿,我想重新编码这个反弹函数,但我不知道该怎么做?根据物理学,最好和最自然的结果是不改变self.velocity[1]。假设self.velocity[0]在X轴上,而self.velocity[1]在Y轴上,那么如果你在X轴上(左或右)弹跳到任何墙壁上,self.velocity[1]不应该改变,只应该反转X轴上的速度。如果您想对Y轴上的碰撞执行相同的操作,您应该执行相同的操作,但使用self.velocity[1]而不是self.velocity[0] 保持相同角度的球反弹示意图: 另一

嘿,我想重新编码这个反弹函数,但我不知道该怎么做?

根据物理学,最好和最自然的结果是不改变
self.velocity[1]
。假设
self.velocity[0]
在X轴上,而
self.velocity[1]
在Y轴上,那么如果你在X轴上(左或右)弹跳到任何墙壁上,
self.velocity[1]
不应该改变,只应该反转X轴上的速度。如果您想对Y轴上的碰撞执行相同的操作,您应该执行相同的操作,但使用
self.velocity[1]
而不是
self.velocity[0]

保持相同角度的球反弹示意图:


另一方面,如果你想让它在一个随机的方向上反弹(看起来不那么自然),你当前的功能很好(尽管如果你使用pygame,你可以将
self.velocity
转换成
Vector2
对象,使它更干净)。

你说的“重新编码这个反弹功能”到底是什么意思?你的意思是重力反弹,随后的每次反弹都较小,就像球在地上反弹一样?我们也不知道你的意思。你期望得到什么结果?很抱歉我说得不够清楚,我想实现的是,当球与墙反弹时,它应该随机反弹回来
def bounce(self):
        self.velocity[0] = -self.velocity[0]
        self.velocity[1] = randint(-10,10)