如何解决弹跳球在屏幕底部出现的毛刺?

时间:2019-04-30 07:21:41

标签: python kivy kivy-language

如果您的奔跑一旦球将要停止,它就会开始略微向上和向下跳跃,并逐渐消失在地板上。

所以我遵循的是乒乓球比赛的基维教程,我一直想着为什么不让球具有重力……我有点明白了,尽管我不知道它是否是好的代码,但是那是不是我的问题。我已经将其与其他基本相同的代码进行了比较,但没有发现任何差异。有人可以告诉我我做错了什么吗? (对不起,我不得不将所有代码粘贴到这里,但是我不知道问题出在哪里...)

#:kivy 1.10.1


<PongBall>:
    size: 50, 50
    canvas:
        Ellipse:
            pos: self.pos
            size: self.size


<PongGame>:
    ball: pong_ball

    canvas:
        Rectangle:
            pos: self.center_x - 5, 0
            size: 10, self.height

    Label:
        font_size: 70
        center_x: root.width / 4
        top: root.height * 9 / 10
        text: "0"

    Label:
        font_size: 70
        center_x: root.width * 3 / 4
        top: root.height * 9 / 10
        text: str(pong_ball.velocity[1])

    PongBall:
        id: pong_ball
        center: self.parent.center

这是我的kv文件:

conditional aggregation

我希望球放慢速度,直到它躺在地面上并且不移动为止。

1 个答案:

答案 0 :(得分:0)

这只是浮点数的常见问题...

只需在您的更新速度功能中执行类似的操作

if velocity <= 1e-6: # some really small number
   velocity = 0.0

在移动功能中固定y位置也是个好主意

if (self.ball.y < 0) or (self.ball.top > self.height):
   self.ball.y = 0.1
   self.ball.velocity_y *= -1