Controller del personaggio Come aggiungere la capacità di spingere corpi rigidi in Unity

In questo tutorial, miglioreremo lo script Unity FPS Controller per consentire al personaggio di spingere corpi rigidi all'interno della scena (lo script seguente dovrebbe funzionare con qualsiasi controller, purché abbia un controller collegato componente CharacterController). Questo script può aggiungere un tocco realistico al tuo gioco consentendo ai giocatori di interagire con oggetti e ambienti dinamici.

Passaggio 1: crea un nuovo script

  • Crea un nuovo script C# nel tuo progetto Unity. Puoi chiamarlo qualcosa come "CharacterPushController".

Passaggio 2: copiare lo script fornito

  • Copia il codice seguente nello script appena creato. Puoi regolare la variabile 'pushPower' per controllare la forza della spinta. Inoltre, potresti voler personalizzare le condizioni per applicare la forza di spinta in base alla logica del tuo gioco.

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

Passaggio 3: allega lo script

  • Allega lo script "CharacterPushController" al GameObject con il componente CharacterController.

Passaggio 4: prova

  • Riproduci la scena e metti alla prova la capacità del controller del personaggio di spingere corpi rigidi con l'aiuto della sceneggiatura appena creata.

Passaggio 5: regolare

  • Regola 'pushPower' per ottenere il comportamento desiderato nel tuo gioco.