我正在开发一个简单的高尔夫游戏,如下图所示。

ios - 在Scenekit中设置高尔夫球物理-LMLPHP

我面临以下问题:

  • 即使我施加少量的力,球仍会沿着草地连续移动?草摩擦不会阻止球。
  • 有时,与墙壁碰撞后,球速会提高,而与墙壁碰撞后,球速应降低。墙壁上有盒子对撞机。
  • 有时,球与墙壁碰撞后会反转其方向。

  • 代码:

    的物理性质:
     ball.physicsBody.affectedByGravity = true;
     ball.physicsBody.mass = 0.0450;
     ball.physicsBody.restitution = 0.8;
     ball.physicsBody.friction = 0.3;
     ball.physicsBody.allowsResting = true;
    

    的物理性质:
    golf.physicsBody.friction = 0.8;
    

    的物理属性:
     leftWall.physicsBody.friction = 0;
     leftWall.physicsBody.restitution = 0.8;
    

    我已将物理世界引力值设置为-9.8。

    我正在寻找解决以上所列问题的建议。谢谢。

    最佳答案

  • 要停止滚动,在3D物理世界中,您需要角度阻尼或线性damping或两者兼而有之。
  • 当与快速旋转的球打交道时,摩擦分量会在发生碰撞时转变为增加的运动速率。
  • 如果球的摩擦力足以使其在碰撞的表面上获得牵引力,则沿与运动矢量相反的方向旋转的球可能会具有足够的角动量,以使其运动方向反转。
  • 关于ios - 在Scenekit中设置高尔夫球物理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49796273/

    10-13 06:34