Довідники 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);
    }
}
Коментарі
Додати коментар

Поки що коментарів немає