首页 > 解决方案 > 在 Scenekit 中,摩擦系数如何在一对材料之间应用

问题描述

我正在学习SceneKit,在物理部分,可以选择设置任何物体的摩擦力。我对此有两个问题

  1. 这是怎样的摩擦?(静态或动态)
  2. 给定 2 个对象系统的摩擦系数,我如何friction在 SceneKit 中分配属性值以使其与现实世界的物理相匹配

例如,对于保龄球游戏,Ball 和 Lane 之间的摩擦系数为 0.12,我应该为 SceneKit 中的 Ball 和 Lane 分配什么值,因为没有设置静态和动态摩擦以及设置 2 个对象系统之间的摩擦的选项。

我可以在 0 和 1 之间为 Ball 分配摩擦力,但它代表什么,因为根据物理摩擦力只能在一对对象之间计算,而不是单个对象

编辑1

我知道我必须通过跟踪和错误设置值,但我想知道如何SceneKit解决这些值。例如,在统一中,他们在 2 种材料(平均值、最大值、最小值、乘法)之间提供了 4 个选项

考虑 2 个物体 A 和 B,它们的摩擦值由 0.1 给出,然后 0.2

μAB = 0.1 (minimum)
μAB = 0.2 (maximum)
μAB = 0.15 (average)
μAB = 0.02 (multiply)

请参阅此链接https://docs.unity3d.com/Manual/class-PhysicMaterial.html

标签: scenekitgame-physics

解决方案


尝试对球道(墙壁和地板)使用静态,对球使用动态。您仍然可以为每个设置其他属性。不过还有很多事情要做——质量、重力、滚动摩擦、阻尼等。

摩擦力分配给物体本身,并在物体相互碰撞或滚动/摩擦时计算。

抱歉,我不知道要使用的确切数字——最好的猜测是因为它们都是光滑的表面,所以数字应该非常接近。您必须关注很多事情,因此我将从默认值开始并从那里进行调整。经过一系列的尝试和错误,我所做的是将一些 UIKit 控件覆盖在 scenekit 的顶部以动态调整物理体属性并重复我想要测试的动作 - 然后我调整属性直到我得到行为我想了。


推荐阅读