Crearea unui controler la persoana întâi în Unity

Acest tutorial vă va ghida prin construirea unui controler simplu la persoana întâi în Unity. Controlerul la persoana întâi le permite jucătorilor să exploreze o lume 3D cu mișcare lină și rotație a camerei. Vom folosi scripturi C# de bază și componenta încorporată CharacterController din Unity.

1. Configurarea scenei

Începeți prin a configura mediul de bază al scenei pentru controlerul dvs. prima persoană:

  1. În Unity, creați o nouă scenă 3D.
  2. Accesați GameObject > 3D Object > Plane pentru a crea o suprafață de sol.
  3. Reglați scara avionului pentru a-l face suficient de mare pentru ca jucătorul să se plimbe.
  4. Accesați GameObject > 3D Object > Cube pentru a adăuga obstacole sau pereți cu care să interacționați.

2. Adăugarea obiectului Player

Pentru a reprezenta jucătorul, vom folosi un obiect capsulă:

  • Accesați GameObject > 3D Object > Capsule pentru a adăuga o capsulă la scenă.
  • Poziționați capsula ușor deasupra solului (de exemplu, Poziție = (0, 1, 0)).
  • Redenumiți capsula în Player.
  • Eliminați componenta Capsule Collider deoarece CharacterController va gestiona coliziunile.
  • Adăugați o componentă CharacterController la obiectul Player selectând Player, apoi făcând clic pe Add Component în Inspector și căutând CharacterController.

3. Scrierea scriptului de controler la persoana întâi

Acum, să creăm un script pentru a gestiona mișcarea jucătorului și rotația camerei:

  1. În fereastra Proiect, faceți clic dreapta și selectați Creare > C# Script. Numele-i FirstPersonController.
  2. Atașați scriptul la obiectul Player trăgându-l din fereastra Proiect în Player în Ierarhie.

Deschideți scriptul și înlocuiți conținutul cu următorul cod:

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. Atașarea camerei

Pentru vizualizarea la persoana întâi, camera trebuie atașată la player:

  • Selectați Camera principală din Ierarhie.
  • Poziționați-l puțin deasupra obiectului Player (de exemplu, Y = 1,5).
  • Trageți Camera pe obiectul Player din Ierarhie pentru a deveni un copil al Playerului. Acest lucru îl va face să urmeze mișcările și rotațiile jucătorului.

5. Configurarea intrărilor

Managerul de intrare al Unity folosește nume de axe predefinite, cum ar fi „Orizontal” și „Vertical” pentru mișcare, precum și „Mouse X” și „Mouse Y” pentru introducerea mouse-ului. Acestea sunt configurate automat, dar puteți ajusta sensibilitatea în Edit > Project Settings > Input Manager.

6. Testarea controlerului

Acum că controlerul pentru persoana întâi este gata, apăsați butonul de redare pentru a-l testa:

  • Folosiți W, A, S, D pentru a muta playerul înainte, înapoi și lateral.
  • Mutați mouse-ul pentru a roti camera și priviți în jur.
  • Asigurați-vă că gravitația funcționează coborând orice obiecte ridicate pentru a vedea dacă jucătorul cade în mod natural.

7. Îmbunătățirea controlerului

Puteți îmbunătăți și mai mult controlerul la persoana întâi adăugând:

  • Funcționalitate de sprint prin creșterea vitezei de mișcare atunci când țineți apăsată tasta Shift.
  • Logica de salt prin detectarea când jucătorul apasă pe bara de spațiu și aplicând o viteză ascendentă.
  • Mecanisme de urcare sau ghemuire pentru interacțiuni mai complexe ale jucătorilor cu mediul.

Concluzie

Cu acest controler de bază la persoana întâi, aveți acum o configurație funcțională a playerului pentru a explora mediile 3D. Prin personalizarea și extinderea scriptului, puteți adăuga mai multe funcții și interacțiuni pentru a se potrivi nevoilor jocului dvs.