Oprettelse af en First-Person Controller i Unity
Denne tutorial vil guide dig gennem opbygningen af en simpel first-person controller i Unity. Førstepersonscontrolleren giver spillerne mulighed for at udforske en 3D-verden med jævn bevægelse og kamerarotation. Vi vil bruge grundlæggende C#-scripting og Unitys indbyggede CharacterController-komponent.
1. Opsætning af scenen
Start med at opsætte det grundlæggende scenemiljø for din first-person controller:
- I Unity skal du oprette en ny 3D-scene.
- Gå til GameObject > 3D Object > Plane for at skabe en jordoverflade.
- Juster skalaen på flyet for at gøre det stort nok til, at spilleren kan gå rundt.
- Gå til GameObject > 3D Object > Cube for at tilføje forhindringer eller vægge at interagere med.
2. Tilføjelse af afspillerobjektet
Til at repræsentere spilleren bruger vi et kapselobjekt:
- Gå til GameObject > 3D Object > Capsule for at tilføje en kapsel til scenen.
- Placer kapslen lidt over jorden (f.eks. Position = (0, 1, 0)).
- Omdøb kapslen til Player.
- Fjern Capsule Collider-komponenten, da CharacterControlleren vil håndtere kollisioner.
- Tilføj en CharacterController-komponent til Player-objektet ved at vælge Player og derefter klikke på Add Component i Inspector og søge efter CharacterController.
3. Skrivning af First-Person Controller-scriptet
Lad os nu oprette et script til at håndtere afspillerens bevægelse og kamerarotation:
- I projektvinduet skal du højreklikke og vælge Opret > C# Script. Navngiv den FirstPersonController.
- Vedhæft scriptet til afspillerobjektet ved at trække det fra projektvinduet til afspilleren i hierarkiet.
Åbn scriptet og erstat indholdet med følgende kode:
using UnityEngine;
public class FirstPersonController : MonoBehaviour
{
public float moveSpeed = 5f;
public float mouseSensitivity = 2f;
public float gravity = -9.81f;
private CharacterController controller;
private Vector3 velocity;
private Transform cameraTransform;
void Start()
{
controller = GetComponent();
cameraTransform = Camera.main.transform;
cameraTransform.position = new Vector3(transform.position.x, transform.position.y + 1.5f, transform.position.z);
cameraTransform.parent = transform; // Attach camera to player
}
void Update()
{
// Player movement
float moveX = Input.GetAxis("Horizontal") * moveSpeed;
float moveZ = Input.GetAxis("Vertical") * moveSpeed;
Vector3 move = transform.right * moveX + transform.forward * moveZ;
controller.Move(move * Time.deltaTime);
// Apply gravity
if (controller.isGrounded && velocity.y < 0)
{
velocity.y = -2f;
}
velocity.y += gravity * Time.deltaTime;
controller.Move(velocity * Time.deltaTime);
// Camera rotation
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity;
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity;
transform.Rotate(Vector3.up * mouseX);
cameraTransform.Rotate(Vector3.left * mouseY);
}
}
4. Montering af kameraet
Til førstepersonsvisning skal kameraet være tilsluttet afspilleren:
- Vælg Hovedkamera i hierarkiet.
- Placer den lidt over spillerobjektet (f.eks. Y = 1,5).
- Træk kameraet til spillerobjektet i hierarkiet for at gøre det til et underordnet af spilleren. Dette vil få det til at følge spillerens bevægelser og rotationer.
5. Konfiguration af indgange
Unitys Input Manager bruger foruddefinerede aksenavne som "Horizontal" og "Lodret" til bevægelse, samt "Mouse X" og "Mouse Y" til museindtastning. Disse konfigureres automatisk, men du kan justere følsomheden i Rediger > Projektindstillinger > Input Manager.
6. Test af controlleren
Nu hvor førstepersonscontrolleren er klar, skal du trykke på afspilningsknappen for at teste den:
- Brug W, A, S, D til at flytte afspilleren fremad, bagud og sidelæns.
- Bevæg musen for at rotere kameraet og se dig omkring.
- Sørg for, at tyngdekraften virker ved at træde af alle hævede genstande for at se, om spilleren falder naturligt.
7. Forbedring af controlleren
Du kan forbedre first-person controlleren yderligere ved at tilføje:
- Sprintfunktionalitet ved at øge moveSpeed, når shift-tasten holdes nede.
- Hoppelogik ved at registrere, hvornår spilleren trykker på mellemrumstasten og anvende en opadgående hastighed.
- Klatre- eller krøjmekanik for mere komplekse spillerinteraktioner med omgivelserne.
Konklusion
Med denne grundlæggende førstepersonscontroller har du nu en funktionel afspilleropsætning til at udforske 3D-miljøer. Ved at tilpasse og udvide scriptet kan du tilføje flere funktioner og interaktioner, så de passer til dit spils behov.