天天看點

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);
    }
}      

結果:

Rigidbody.position/rotation更新測試

由于Unity實體的更新在FixedUpdate之後,而FixedUpdate調用在Update之前,故Update時值歸0了