在Scenekit中设置高尔夫球物理

时间:2018-04-12 12:14:42

标签: ios scenekit game-physics

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

enter image description here

我面临以下问题:

  1. 即使我施加少量的力,球也会连续沿着草地移动?草摩擦不会阻止球。
  2. 有时候,在与墙壁碰撞后球速会增加而不是在与墙壁碰撞后球速会降低。墙上有箱式对撞机。
  3. 有时,球在与墙壁碰撞后会反转方向。
  4. 代码:

    球的物理属性

     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。

    我正在寻找修复上述问题的建议。谢谢。

1 个答案:

答案 0 :(得分:1)

  1. 要停止滚动,在3D物理世界中,您需要角度阻尼,或线性damping,或两者兼而有之。

  2. 摩擦成分在处理快速旋转的球时,可以在碰撞时转换为增加的运动速度。

  3. 与其行进矢量相反方向旋转的球可能具有足够的角动量,以便在其摩擦力足以使其在与其碰撞的表面上获得牵引力时反转其行进方向。