Karakterkontroller Hvordan legge til evne til å skyve rigidbodies i enhet

I denne opplæringen vil vi forbedre Unity FPS Controller-skriptet for å gjøre det mulig for karakteren å skyve rigidbodies i scenen (skriptet nedenfor skal fungere med alle kontroller, så lenge det har en vedlagt CharacterController-komponent). Dette skriptet kan gi spillet et realistisk preg ved å la spillere samhandle med objekter og dynamiske miljøer.

Trinn 1: Lag et nytt skript

  • Lag et nytt C#-skript i Unity-prosjektet ditt. Du kan navngi det noe sånt som "CharacterPushController".

Trinn 2: Kopier det medfølgende skriptet

  • Kopier koden nedenfor inn i det nyopprettede skriptet. Du kan justere 'pushPower' variabelen for å kontrollere styrken på push. I tillegg kan det være lurt å tilpasse betingelsene for å bruke push-kraften basert på spillets logikk.

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

Trinn 3: Legg ved skriptet

Trinn 4: Test

  • Spill scenen og test karakterkontrollerens evne til å presse stive kropper ved hjelp av det nyopprettede manuset.

Trinn 5: Juster

  • Juster 'pushPower' for å oppnå ønsket oppførsel i spillet ditt.
Foreslåtte artikler
Hvordan legge til Moving Platform Support til Character Controller i Unity
Legger til Head Bobbing-effekt til kameraet i enhet
Legger til Crouching til FPS Player i Unity
Lommelyktopplæring for Unity
Helikopterkontrollør for Unity
Legger til Double Jump Support til en 2D Platformer Character Controller i Unity
Hvordan lage krankontroll i Unity