Rigidbody.position/rotation更新测试

Rigidbody.position/rotation主要提供在下一个物理步之前更新物理位置,一般用于SweepTest这样的接口

那么测试一下会不会修改掉transform.position的值

测试结果:并不会立即改变transform.position,而会在下一个物理步执行时改变。如果手动改变transform.position/rotation不受影响

测试脚本:

using UnityEngine;

public class RigidbodyStepTest : MonoBehaviour
{
    public Rigidbody rigidbodyComponent;


    void OnEnable()
    {
        rigidbodyComponent.position = Vector3.zero;
        Debug.Log("OnEnable: " + transform.position + " frame count: " + Time.frameCount);
    }

    void FixedUpdate()
    {
        Debug.Log("FixedUpdate: " + transform.position + " frame count: " + Time.frameCount);
    }

    void Update()
    {
        Debug.Log("Update: " + transform.position + " frame count: " + Time.frameCount);
    }
}

结果:

由于Unity物理的更新在FixedUpdate之后,而FixedUpdate调用在Update之前,故Update时值归0了

原文地址:https://www.cnblogs.com/hont/p/5217800.html