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了