Character Controller Hur man lägger till förmåga att pusha stela kroppar i enhet

I den här handledningen kommer vi att förbättra Unity FPS Controller-skriptet för att göra det möjligt för karaktären att trycka stela kroppar i scenen (skriptet nedan bör fungera med alla kontroller, så länge det har en bifogad CharacterController-komponent). Det här skriptet kan ge ditt spel en realistisk touch genom att låta spelare interagera med objekt och dynamiska miljöer.

Steg 1: Skapa ett nytt skript

  • Skapa ett nytt C#-skript i ditt Unity-projekt. Du kan namnge det något som "CharacterPushController".

Steg 2: Kopiera det medföljande skriptet

  • Kopiera koden nedan till det nyskapade skriptet. Du kan justera variabeln 'pushPower' för att kontrollera styrkan på pushen. Dessutom kanske du vill anpassa villkoren för att tillämpa push-kraften baserat på ditt spels 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;
    }
}

Steg 3: Bifoga skriptet

  • Bifoga "CharacterPushController"-skriptet till GameObject med CharacterController-komponenten.

Steg 4: Testa

  • Spela scenen och testa karaktärskontrollerns förmåga att pressa stela kroppar med hjälp av det nyskapade manuset.

Steg 5: Justera

  • Justera 'pushPower' för att uppnå önskat beteende i ditt spel.