Charakter-Controller So fügen Sie die Fähigkeit hinzu, starre Körper in Einheit zu schieben
In diesem Tutorial erweitern wir das Skript Unity FPS Controller, um es der Figur zu ermöglichen, starre Körper innerhalb der Szene zu verschieben (das folgende Skript sollte mit jedem Controller funktionieren, solange dieser angeschlossen ist CharacterController-Komponente). Dieses Skript kann Ihrem Spiel eine realistische Note verleihen, indem es den Spielern ermöglicht, mit Objekten und dynamischen Umgebungen zu interagieren.
Schritt 1: Erstellen Sie ein neues Skript
- Erstellen ein neues C#-Skript in Ihrem Unity-Projekt. Sie können es etwa "CharacterPushController" nennen.
Schritt 2: Kopieren Sie das bereitgestellte Skript
- Kopieren Sie den folgenden Code in das neu erstellte Skript. Sie können die Variable 'pushPower' anpassen, um die Stärke des Stoßes zu steuern. Darüber hinaus möchten Sie möglicherweise die Bedingungen für die Anwendung der Schubkraft basierend auf der Logik Ihres Spiels anpassen.
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;
}
}
Schritt 3: Hängen Sie das Skript an
- Hängen Sie das "CharacterPushController"-Skript mit der CharacterController-Komponente an das GameObject an.
Schritt 4: Testen
- Spielen Sie die Szene und testen Sie die Fähigkeit des Charakter-Controllers, Starrkörper mithilfe des neu erstellten Skripts zu verschieben.
Schritt 5: Anpassen
- Passen Sie und 'pushPower' an, um das gewünschte Verhalten in Ihrem Spiel zu erreichen.