Контролер персонажів. Як додати можливість штовхати жорсткі тіла в Unity

У цьому підручнику ми покращимо сценарій Unity FPS Controller, щоб персонаж міг штовхати тверді тіла в сцені (наведений нижче сценарій має працювати з будь-яким контролером, за умови, що до нього приєднано компонент CharacterController). Цей сценарій може додати вашій грі реалістичності, дозволяючи гравцям взаємодіяти з об’єктами та динамічним середовищем.

Крок 1: Створіть новий сценарій

  • Створіть новий сценарій C# у своєму проекті Unity. Ви можете назвати це приблизно "CharacterPushController".

Крок 2: Скопіюйте наданий сценарій

  • Скопіюйте наведений нижче код у щойно створений сценарій. Ви можете налаштувати змінну 'pushPower', щоб контролювати силу поштовху. Крім того, ви можете налаштувати умови для застосування сили поштовху на основі логіки вашої гри.

CharacterPushController.cs

using UnityEngine;

public class CharacterPushController : MonoBehaviour
{
    // Adjust this variable to control the strength of the push
    public float pushPower = 2.0f;

    void OnControllerColliderHit(ControllerColliderHit hit)
    {
        Rigidbody body = hit.collider.attachedRigidbody;

        // No rigidbody or kinematic rigidbody
        if (body == null || body.isKinematic)
        {
            return;
        }

        // Avoid pushing objects below the character
        if (hit.moveDirection.y < -0.3)
        {
            return;
        }

        // Calculate push direction from move direction,
        // pushing only to the sides, not up and down
        Vector3 pushDir = new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z);

        // Apply the push
        body.velocity = pushDir * pushPower;
    }
}

Крок 3: Приєднайте сценарій

Крок 4: Тест

  • Розіграйте сцену і перевірте здатність контролера персонажа штовхати тверді тіла за допомогою щойно створеного сценарію.

Крок 5: Налаштуйте

  • Налаштуйте 'pushPower', щоб досягти бажаної поведінки у вашій грі.
Рекомендовані статті
Як додати підтримку рухомої платформи до контролера символів в Unity
Контролер RTS і MOBA Player для Unity
Навчальний посібник із 3D-контролера Worm для Unity
Контролер космічного корабля в Unity
Контролер 2D символів для Unity
Контролер Unity FPS
Контролер вертольота для Unity