【问题标题】:Billiards game collision台球游戏碰撞
【发布时间】:2012-02-27 15:41:24
【问题描述】:

我选择为班级编写台球游戏。一切正常,但我想提高球碰撞的真实感。

对于每个球,我都有一个 pygame 矩形,即球的中心、球的直径和在比赛中的位置。还有一个速度向量(u_x, u_y)。

此时我用colliderect检查碰撞,但我可以改变它来测量中心球的距离。

我读过关于动量守恒方程的文章,但这没有考虑球的位置。不是同一个两球正面撞击比横向撞击。

有人可以帮助我考虑撞击时刻球位置的碰撞后新球速度的公式。非常感谢!

【问题讨论】:

  • @bart,谢谢,但我不明白dotboundary_normal。你从这个链接写python公式很容易吗?
  • dot 指的是dot productboundary_normal 是撞击点处​​的法线向量。
  • 哦!好的。我知道如何计算点积,但是,如何从我的数据中获取法线向量?谢谢你的帮助,巴特。
  • bart,是一款经典的圆形台球。你有两个球的中心 (x,y) 和直径 (d)。

标签: collision-detection pygame


【解决方案1】:

模块euclid 会有所帮助。它包含一个矢量类,具有 normal()、dot() 等...http://partiallydisassembled.net/euclid.html(您可以将模块复制到您的项目文件夹中,无需安装。)

对于公式,请检查:https://gamedev.stackexchange.com/a/7901/6776http://archive.ncsa.illinois.edu/Classes/MATH198/townsend/math.html#COLLISION

注意:你的物理越复杂,你就越需要使用物理引擎,例如[在此处输入链接描述][pymunk] 或 ODE。但是,这是一次很好的学习经历。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 2015-05-20
    相关资源
    最近更新 更多