Contrôleur de personnage Comment ajouter la possibilité de pousser des corps rigides dans Unity

Dans ce didacticiel, nous améliorerons le script Unity FPS Controller pour permettre au personnage de pousser des corps rigides dans la scène (le script ci-dessous devrait fonctionner avec n'importe quel contrôleur, à condition qu'il ait un contrôleur attaché. composant CharacterController). Ce script peut ajouter une touche réaliste à votre jeu en permettant aux joueurs d'interagir avec des objets et des environnements dynamiques.

Étape 1: Créer un nouveau script

  • Créez un nouveau script C# dans votre projet Unity. Vous pouvez le nommer quelque chose comme "CharacterPushController".

Étape 2: copiez le script fourni

  • Copiez le code ci-dessous dans le script nouvellement créé. Vous pouvez ajuster la variable 'pushPower' pour contrôler la force de la poussée. De plus, vous souhaiterez peut-être personnaliser les conditions d'application de la force de poussée en fonction de la logique de votre jeu.

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

Étape 3: Joindre le script

  • Attachez le script "CharacterPushController" au GameObject avec le composant CharacterController.

Étape 4: Tester

  • Jouez la scène et testez la capacité du contrôleur de personnage à pousser des corps rigides à l'aide du script nouvellement créé.

Étape 5: Ajuster

  • Ajustez le 'pushPower' pour obtenir le comportement souhaité dans votre jeu.