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.