Контроллер персонажа Как добавить возможность толкать твердые тела в Unity

В этом уроке мы улучшим сценарий Unity FPS Controller, чтобы персонаж мог перемещать твердые тела внутри сцены (сценарий ниже должен работать с любым контроллером, если к нему подключен Компонент «CharacterController»). Этот сценарий может добавить реалистичности вашей игре, позволяя игрокам взаимодействовать с объектами и динамической средой.

Шаг 1. Создайте новый сценарий

  • Создайте новый скрипт C# в вашем проекте Unity. Вы можете назвать его примерно так: "CharacterPushController".

Шаг 2. Скопируйте предоставленный сценарий

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

ПерсонажПушКонтроллер.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: Отрегулируйте

Рекомендуемые статьи
Как добавить поддержку движущейся платформы в контроллер персонажей в Unity
Учебное пособие по 3D-контроллеру Worm для Unity
Контроллер 2D-персонажей для Unity
Контроллер игрока в жанрах RTS и MOBA для Unity
Добавление приседания в FPS Player в Unity
Учебное пособие по фонарику для Unity
Unity Как создать мобильное сенсорное управление