position | 为 Rigidbody 对象提供新位置。 |
将运动 Rigidbody 向 position
移动。
Rigidbody.MovePosition 会移动刚体,并遵循插值设置。启用了刚体插值时,Rigidbody.MovePosition 会在各帧之间创建平滑过渡。Unity 在每个 FixedUpdate
调用中移动 Rigidbody。position
出现在本地空间中。将 Rigidbody 从一个位置传送到另一个位置会使用 Rigidbody.position 而不是 MovePosition。
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public Rigidbody rb;
void Awake() { // Creates the floor. GameObject floor = GameObject.CreatePrimitive(PrimitiveType.Plane); floor.transform.localScale = new Vector3(6.0f, 1.0f, 6.0f); floor.transform.position = new Vector3(0.0f, -0.5f, 0.0f);
Material matColor = new Material(Shader.Find("Standard")); matColor.color = new Color32(32, 32, 128, 255); floor.GetComponent<Renderer>().material = matColor;
transform.position = new Vector3(-3.0f, 0.0f, 0.0f);
Camera.main.transform.position = new Vector3(6.0f, 4.0f, 6.0f); Camera.main.transform.localEulerAngles = new Vector3(26.0f, -135.0f, 0.0f); }
void Start() { rb = GetComponent<Rigidbody>();
// Moves the GameObject using it's transform. rb.isKinematic = true; }
void FixedUpdate() { // Moves the GameObject to the left of the origin. if (transform.position.x > 3.0f) { transform.position = new Vector3(-3.0f, 0.0f, 0.0f); }
rb.MovePosition(transform.position + transform.right * Time.fixedDeltaTime); } }
如果刚体的 isKinematic
设置为 false,则其工作方式类似于 transform.position=newPosition
,并将对象传送到位置
(而不是执行平滑过渡)。