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

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.
Articole sugerate
Cum să adăugați suport pentru platforma în mișcare la controlerul de caractere în Unity
Cum să faci controlul macaralei în Unity
Unity Cum să faci comenzi tactile mobile
Controler de navă spațială în Unity
Controler de caractere 2D pentru Unity
Adăugarea efectului de balansare a capului la cameră în Unity
Tutorial de sus în jos pentru controlerul jucătorului pentru Unity