Kontroler postaci Jak dodać możliwość pchania sztywnych ciał w jedności

W tym samouczku ulepszymy skrypt Unity Kontroler FPS, aby umożliwić postaci przesuwanie ciał sztywnych w obrębie sceny (skrypt poniżej powinien działać z dowolnym kontrolerem, o ile ma on dołączony komponent CharacterController). Ten skrypt może dodać realistycznego akcentu do Twojej gry, umożliwiając graczom interakcję z obiektami i dynamicznymi środowiskami.

Krok 1: Utwórz nowy skrypt

  • Utwórz nowy skrypt C# w swoim projekcie Unity. Możesz to nazwać na przykład "CharacterPushController".

Krok 2: Skopiuj dostarczony skrypt

  • Skopiuj poniższy kod do nowo utworzonego skryptu. Możesz dostosować zmienną 'pushPower', aby kontrolować siłę pchnięcia. Dodatkowo możesz dostosować warunki stosowania siły pchania w oparciu o logikę gry.

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;
    }
}

Krok 3: Dołącz skrypt

Krok 4: Przetestuj

  • Zagraj w tę scenę i przetestuj zdolność kontrolera postaci do pchania ciał sztywnych za pomocą nowo utworzonego skryptu.

Krok 5: Dostosuj

  • Dostosuj 'pushPower', aby uzyskać pożądane zachowanie w grze.
Sugerowane artykuły
Jak dodać obsługę platformy ruchomej do kontrolera postaci w Unity
System dialogu na rzecz jedności
Tworzenie ruchu gracza w jedności
Jak sterować dźwigiem w Unity
Dodanie kucania do odtwarzacza FPS w Unity
Samouczek skakania po ścianie w 3D i 2D dla odtwarzacza Unity
Poradnik dotyczący latarki dla Unity