在重力作用下,我如何让圆反弹回来?

2024-06-02 23:52:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个球,一旦它撞到地板上,我希望它反弹起来,说原来反弹的一半,直到它不能再反弹了。我加了一个传球,球刚好停在底部。如何使它反弹起来

kickoff_location = [WIDTH/2 - ball_size[0] / 2, 210]
gravity = 2
ball_bounce = False

if not(ball_bounce):
    if kickoff_location[1] < player_one_pos[1] + (player_width / 2) + ball_size[0]:
        kickoff_location[1] += gravity
    elif kickoff_location[1] == player_one_pos[1] + (player_width / 2) + ball_size[0]:
        kickoff_location[1] -= gravity / 2
        pass

Tags: posfalsesizeiflocationwidthonegravity
1条回答
网友
1楼 · 发布于 2024-06-02 23:52:40

你的球需要一个速度矢量,即vel = [0, 0] # [dX, dY]

你需要简单的重力加速度常数,即grav = 0.1

你需要环境阻力常数,即resist = 0.8

你需要提到弹性系数,即elast = 0.5

现在,在每个更新周期中,您:

  • 通过重力更新速度的Y部分:vel[1] += grav
  • 通过阻力更新两个速度部分:vel[0] *= resist ; vel[1] *= resist
  • 分别检查垂直和水平碰撞。如果碰撞是垂直的(地板/天花板),则反转Y速度并通过弹性修改:vel[1] = -vel[1] * elast。水平碰撞也一样,但是速度的X部分
  • 通过速度向量更新球的位置:ball_loc[0] += vel[0] ; ball_loc[1] += vel[1]

修改常量以获得真实的球运动

相关问题 更多 >