【问题标题】:Floating Objects in UnityUnity 中的浮动对象
【发布时间】:2020-07-23 06:07:07
【问题描述】:

我在一个网络教程中找到了这段代码,可以让 Unity 中的对象漂浮在水面上:

RequireComponent (typeof (Rigidbody))]
public class ObjectFloatScript : MonoBehaviour {
    public float waterLevel = 0.0f;
    public float floatThreshold = 2.0f;
    public float waterDensity = 0.125f;
    public float downForce = 4.0f;

    private float forceFactor;
    private Vector3 floatForce;

    void FixedUpdate () {
        forceFactor = 1.0f - ((transform.position.y - waterLevel) / floatThreshold);

        if (forceFactor > 0.0f) {
            floatForce = -Physics.gravity * GetComponent<Rigidbody> ().mass * (forceFactor - GetComponent<Rigidbody> ().velocity.y * waterDensity);
            
            GetComponent<Rigidbody> ().AddForceAtPosition (floatForce, transform.position);
        }
    }
}

我不明白的是 Rigidbody.velocity.y 和水密度之间的关系?有人可以帮忙吗? 谢谢

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    这看起来像是某种“肚皮”因素:)

    只有-gravity * mass 会产生一种力完全抵消物体上的重力,立即停止它。

    通过将这个力缩小velocity.y * waterDensity,它会根据进入速度减小这个反作用力,模拟物体进入水中时的某种“水摩擦”。

    干杯!

    【讨论】:

      猜你喜欢
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 2020-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多