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

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.
Articoli suggeriti
Come aggiungere il supporto della piattaforma mobile al controller del personaggio in Unity
Tutorial sul controller worm 3D per Unity
Tutorial sul controller del lettore top-down per Unity
Controller per lettori RTS e MOBA per Unity
Aggiunta del supporto per il doppio salto a un controller di personaggi platform 2D in Unity
Controller aereo per Unity
Implementazione del sistema Parkour in Unity