Справочники Unity C# Rigidbody.MovePosition

Что такое Rigidbody.MovePosition в Unity C#?

Метод Rigidbody.MovePosition используется для перемещения объекта в пространстве с учетом физики. Этот метод позволяет задать новую позицию Rigidbody, обеспечивая корректное взаимодействие с другими физическими объектами в сцене. В отличие от прямого изменения позиции через Transform, MovePosition учитывает физическую симуляцию.


Метод полезен для реализации движений, которые должны быть предсказуемыми и взаимодействовать с физикой, например, для перемещения объектов, которым нужно столкновение с другими. Он идеально подходит для сценариев, где требуется контролируемое движение, управляемое скриптом, без резких изменений скорости или положения.


Особенности метода Rigidbody.MovePosition
  1. Позволяет перемещать объект, сохраняя корректное поведение в физической системе.
  2. Требует наличия компонента Rigidbody на объекте.
  3. Работает только при использовании FixedUpdate для обновления логики физики.


using UnityEngine;

public class MovingObject : MonoBehaviour
{
    private Rigidbody rb;
    public float speed = 5.0f;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // Расчет нового положения
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");

        Vector3 movement = new Vector3(horizontal, 0, vertical);
        Vector3 newPosition = rb.position + movement * speed * Time.fixedDeltaTime;

        // Перемещение объекта
        rb.MovePosition(newPosition);
    }
}
Комментарии
Добавить комментарий

Пока комментариев нет