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

É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.
Articles suggérés
Contrôleur de lecteur RTS et MOBA pour Unity
Comment ajouter la prise en charge de la plate-forme mobile au contrôleur de personnage dans Unity
Ajout de la prise en charge du double saut à un contrôleur de personnage de plateforme 2D dans Unity
Ajout de Crouching au lecteur FPS dans Unity
Créer le mouvement des joueurs dans Unity
Tutoriel sur le contrôleur de ver 3D pour Unity
Unity Comment créer des commandes tactiles mobiles