Version: 2019.2
public void MovePosition (Vector3 position);

パラメーター

positionProvides the new position for the Rigidbody object.

説明

Moves the kinematic Rigidbody towards position.

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 local space. Teleporting a Rigidbody from one position to another uses Rigidbody.position instead of 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); } }

If the rigidbody has isKinematic set to false, it works like transform.position=newPosition and teleports the object to the new position (rather than performing a smooth transition).