Version: 2022.3

Rigidbody.MovePosition

切换到手册
public void MovePosition (Vector3 position);

参数

position Rigidbody 对象提供新位置。

描述

将运动 Rigidbodyposition 移动。

Rigidbody.MovePosition moves a Rigidbody and complies with the interpolation settings. When Rigidbody interpolation is enabled, Rigidbody.MovePosition creates a smooth transition between frames. Unity moves a Rigidbody in each FixedUpdate call. The position occurs in world space. Teleporting a Rigidbody from one position to another uses Rigidbody.position instead of MovePosition.

using UnityEngine;

public class Example : MonoBehaviour { Rigidbody m_Rigidbody; public float m_Speed = 5f;

void Start() { //Fetch the Rigidbody from the GameObject with this script attached m_Rigidbody = GetComponent<Rigidbody>(); }

void FixedUpdate() { //Store user input as a movement vector Vector3 m_Input = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));

//Apply the movement vector to the current position, which is //multiplied by deltaTime and speed for a smooth MovePosition m_Rigidbody.MovePosition(transform.position + m_Input * Time.deltaTime * m_Speed); } }