Controler de caractere Cum să adăugați capacitatea de a împinge corpuri rigide în Unity

În acest tutorial, vom îmbunătăți scriptul Unity FPS Controller pentru a permite personajului să împingă corpuri rigide în scenă (scriptul de mai jos ar trebui să funcționeze cu orice controler, atâta timp cât are atașat un controler). componenta CharacterController). Acest script poate adăuga o notă realistă jocului tău, permițând jucătorilor să interacționeze cu obiecte și medii dinamice.

Pasul 1: Creați un script nou

  • Creați un nou script C# în proiectul dvs. Unity. Îi poți denumi ceva de genul "CharacterPushController".

Pasul 2: Copiați scriptul furnizat

  • Copiați codul de mai jos în scriptul nou creat. Puteți ajusta variabila 'pushPower' pentru a controla puterea împingerii. În plus, este posibil să doriți să personalizați condițiile de aplicare a forței de împingere în funcție de logica jocului dvs.

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

Pasul 3: Atașați Scriptul

  • Atașați scriptul "CharacterPushController" la GameObject cu componenta CharacterController.

Pasul 4: Testați

  • Redați scena și testați capacitatea controlorului de caractere de a împinge corpuri rigide cu ajutorul scenariului nou creat.

Pasul 5: Ajustați

  • Ajustați 'pushPower' pentru a obține comportamentul dorit în jocul dvs.