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:

  1. I Unity skal du oprette en ny 3D-scene.
  2. Gå til GameObject > 3D Object > Plane for at skabe en jordoverflade.
  3. Juster skalaen på flyet for at gøre det stort nok til, at spilleren kan gå rundt.
  4. 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:

  1. I projektvinduet skal du højreklikke og vælge Opret > C# Script. Navngiv den FirstPersonController.
  2. 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.