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
- Fest "CharacterPushController"-skriptet til GameObject med CharacterController-komponenten.
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.