Character Controller Sådan tilføjes evnen til at skubbe rigidbodies i enhed

I denne øvelse vil vi forbedre Unity FPS Controller scriptet for at gøre det muligt for karakteren at skubbe rigidbodies inde i scenen (scriptet nedenfor bør fungere med enhver controller, så længe det har en tilknyttet CharacterController-komponent). Dette script kan tilføje et realistisk touch til dit spil ved at tillade spillere at interagere med objekter og dynamiske miljøer.

Trin 1: Opret et nyt script

  • Opret et nyt C#-script i dit Unity-projekt. Du kan navngive det noget som "CharacterPushController".

Trin 2: Kopier det medfølgende script

  • Kopier koden nedenfor ind i det nyoprettede script. Du kan justere 'pushPower'-variablen for at kontrollere styrken af ​​push. Derudover vil du måske tilpasse betingelserne for at anvende push-kraften baseret på dit spils logik.

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

Trin 3: Vedhæft scriptet

  • Vedhæft "CharacterPushController"-scriptet til GameObject med CharacterController-komponenten.

Trin 4: Test

  • Spil scenen og test karaktercontrollerens evne til at skubbe stive kroppe ved hjælp af det nyoprettede script.

Trin 5: Juster

  • Juster 'pushPower' for at opnå den ønskede adfærd i dit spil.