I lettori come te aiutano a sostenere MUO. Quando effettui un acquisto utilizzando i link sul nostro sito, potremmo guadagnare una commissione di affiliazione. Per saperne di più.

Un controller di personaggi può aiutarti a implementare semplici movimenti fisici nel tuo gioco.

Puoi avvicinarti ai controller di personaggi Unity3D da diverse angolazioni. Se usi una libreria con potenti classi e funzioni, la creazione di un controller di personaggi basato sulla fisica può essere un posto divertente per iniziare lo sviluppo del tuo gioco.

Passaggio 1: crea una scena con oggetti del giocatore e del terreno

Una volta che Unity è aperto e hai creato un nuovo progetto, puoi iniziare aggiungendo un paio di oggetti alla tua scena. Puoi creare questi oggetti nell'ordine che preferisci, ma assicurati di utilizzare le impostazioni corrette. Sebbene questo progetto sia di base, è un ottimo modo per farlo iniziare con Unity.

Un oggetto piano 3D per il terreno

Il primo oggetto da aggiungere alla tua scena è un aereo. Fare clic con il pulsante destro del mouse all'interno del riquadro della gerarchia, passare il mouse sopra

instagram viewer
Oggetto 3De selezionare Aereo dalla lista. Puoi regolare le dimensioni dell'aereo per fornire un'area di prova più ampia, ma non devi fare nient'altro.

Un modello di giocatore oggetto cubo

Successivamente, è il momento di aggiungere un cubo alla scena che funga da modello del giocatore. Fare clic con il pulsante destro del mouse all'interno del riquadro della gerarchia, passare il mouse sopra Oggetto 3De selezionare Cubo dal menu a tendina. Posiziona il nuovo cubo in modo che si trovi sopra il piano che hai anche aggiunto. Devi anche aggiungere un componente corpo rigido per trasformare il cubo in un oggetto fisico.

Seleziona il cubo e vai all'ispettore. Clicca su Aggiungi componente nella parte inferiore del riquadro, cerca rigidbody e seleziona Corpo rigido dall'elenco quando appare. Spunta il Usa la gravità spuntare la casella e lasciare il resto delle impostazioni così come sono.

Potete trovare risorse Unity gratuite online per abbellire il tuo progetto.

Una fotocamera in terza persona

La tua scena dovrebbe già avere una videocamera che puoi usare come videocamera in terza persona. Posiziona la videocamera in modo che si trovi in ​​una comoda posizione in terza persona sopra il tuo cubo. Vai al riquadro della gerarchia prima di trascinare e rilasciare la videocamera sul cubo per creare una relazione genitore-figlio. La fotocamera seguirà automaticamente il tuo cubo una volta fatto.

Un test rapido

Sebbene la tua scena non abbia ancora alcun codice, puoi testare il lavoro che hai svolto finora. Clicca il Giocare pulsante nella parte superiore dello schermo per caricare il gioco. Dovresti vedere il cubo cadere e atterrare sopra l'aereo, e la telecamera dovrebbe seguire il cubo mentre cade.

Passaggio 2: impostare un file C#

Ora è il momento di creare un file C# in modo da poter iniziare a programmare alcuni movimenti. Vai alla sezione Progetto, fai clic con il pulsante destro del mouse, passa con il mouse su Crea e seleziona Cartella dall'elenco. Assegna un nome alla cartella Script o qualcosa di simile.

Naviga all'interno della nuova cartella e ripeti il ​​processo, ma seleziona Script C# dall'elenco. Puoi dare a questo file qualsiasi nome, ma questo sarà anche il nome della funzione principale al suo interno. Assicurati che il tuo nuovo C# assomigli a questo.

utilizzando Sistema. Collezioni;
utilizzando Sistema. Collezioni. Generico;
utilizzando UnityEngine;

pubblicoclasseCarattere_Controllo: Monocomportamento {
vuotoInizio() {
}

vuotoAggiornamento() {
}
}

Passaggio 3: usa C# per creare movimenti avanti e indietro con velocità

Prima di aggiungere funzioni nel file di script, dichiara alcune variabili pubbliche. Il primo è un Rigidbody per memorizzare il modello del giocatore. Dichiara anche un float per tenere traccia della velocità di movimento. Queste variabili vanno nella classe principale, al di fuori di qualsiasi funzione.

pubblico corpo rigido corpo rigido;
pubblicogalleggiante velocità;

Successivamente, è il momento di aggiungere una singola riga di codice alla funzione Start. Questo usa una dichiarazione GetComponent per assegnare il componente rigidbody del cubo alla variabile rigidbody che hai creato.

vuotoInizio() {
corpo rigido = GetComponent < Corpo rigido > ();
}

Ora puoi aggiungere del codice che farà muovere il tuo modello di giocatore. Questo codice è carino e semplice; hai solo bisogno di due istruzioni if, una per il movimento in avanti e una per il movimento all'indietro. Puoi usare Input. GetKey per determinare quando viene premuto un tasto. In questo caso, stai cercando le pressioni dei tasti W e S.

Premendo uno di questi tasti si aggiunge una forza al cubo rigidbody utilizzando rigidbody. AddForce. È possibile calcolare la direzione e la velocità della forza aggiunta moltiplicando la sua posizione sull'asse Z (transform.forward) per la variabile velocità. Non esiste una classe transform.backward da utilizzare per il movimento all'indietro, ma ciò è possibile moltiplicando transform.forward per -1.

Se (Ingresso. Ottieni chiave("w")) {
corpo rigido. AddForce (transform.forward * velocità);
}

Se (Ingresso. Ottieni chiave("S")) {
corpo rigido. AddForce((transform.forward * -1) * velocità);
}

Salva il file C# e torna a Unity. Trova lo script all'interno del riquadro Progetto e trascinalo sul cubo del modello di carattere all'interno della gerarchia per assegnare lo script a quell'oggetto. Quando selezioni il Cubo dovresti vedere lo script come un componente nel riquadro Ispettore. Fare clic all'interno della casella della variabile corpo rigido e selezionare il corpo rigido del cubo.

Ora puoi utilizzare il pulsante Riproduci per avviare il gioco e testare il tuo codice. Ma aspetta! C'è un problema; il tuo Cubo rotolerà piuttosto che andare dritto in avanti. Torna all'ispettore del cubo, trova il componente Rigidbody e seleziona le caselle per bloccare la rotazione sull'asse X e Z prima di riavviare il gioco. Ora dovrebbe funzionare.

Passaggio 4: utilizzare C# per creare una svolta a sinistra e a destra con la coppia

A differenza del movimento avanti e indietro, girare il tuo modello di giocatore Cube richiede una forza chiamata coppia. Hai bisogno di un'altra variabile per questo: un float pubblico per assegnare un valore di coppia.

pubblicogalleggiante coppia;

Il codice per girare a sinistra ea destra in questo script è molto simile a quello usato anche per andare avanti e indietro. C'e 'un Se istruzione per ogni direzione che cerca le pressioni del tasto D (svolta a destra) o del tasto A (svolta a sinistra).

Il primo passo in ogni istruzione if è determinare la direzione della virata usando l'Input. GetAxis e assegna il risultato a una variabile float. Successivamente, usa rigidbody. AddTorque per applicare la forza di rotazione al modello di carattere del cubo moltiplicando la coppia, la rotazione e l'asse Z del cubo.

Se (Ingresso. Ottieni chiave("D")) {
galleggiante girare = Ingresso. OttieniAsse("Orizzontale");
corpo rigido. AddTorque (transform.up * torque * turn);
}

Se (Ingresso. Ottieni chiave("UN")) {
galleggiante girare = Ingresso. OttieniAsse("Orizzontale");
corpo rigido. AddTorque (transform.up * torque * turn);
}

Salva il tuo codice e torna a Unity per provarlo. Puoi regolare la velocità e il tempo di accelerazione della rotazione del modello del tuo giocatore selezionando il Cubo e modificando le variabili di massa, trascinamento e coppia del corpo rigido nel tuo script. Questo progetto di esempio si basa su 1 massa, 1 resistenza e 2 coppia.

Passaggio 5: utilizzare C# per programmare il salto

Come elemento finale di questo controller di personaggi Unity, è il momento di creare il tuo salto. La creazione di un salto è più complessa rispetto agli altri controlli di base su cui hai lavorato, dato che un salto deve avere un'altezza limitata. Inizia aggiungendo una variabile booleana privata per tenere traccia se il giocatore sta saltando o meno.

privatobool sta saltando = falso;

Questa variabile non farà nulla senza un'istruzione per testarla. In questo caso, un'istruzione if di base per verificare se la variabile è falsa farà il trucco. Aggiungendo la stessa condizione all'altro movimento se le istruzioni impediranno al giocatore di muoversi durante i salti.

Se (!sta saltando) {
}

Aggiungendo la stessa condizione all'altro movimento se le istruzioni impediranno al giocatore di muoversi durante i salti.

Se (Ingresso. Ottieni chiave("w") && !sta saltando) {
corpo rigido. AddForce (transform.forward * velocità);
}

All'interno dell'istruzione if !isJumping, è necessaria un'altra istruzione if, questa volta per verificare la pressione di un tasto del pulsante di salto. Impostare la variabile isJumping su true è la prima cosa da fare in questa istruzione if, seguita da una dichiarazione rigidbody.angularVelocity per rimuovere le forze attualmente applicate al cubo.

Ora puoi usare il corpo rigido. Dichiarazione AddForce per aggiungere forza al cubo sul suo asse Z, creando il movimento verso l'alto di un salto. Infine, è il momento di utilizzare una dichiarazione di invoke per chiamare una funzione diversa dopo 0,8 secondi.

Se (!sta saltando) {
Se (Ingresso. GetKeyDown("spazio")) {
sta saltando = VERO;
corpo rigido. AddForce (transform.up * velocità * 120);
rigidbody.angularVelocity = Vector3.zero;
Invocare("Sposta_Setter", 0.8 F);
}
}

Questa funzione reimposta la variabile isJumping su false in modo che il movimento/salto sia nuovamente possibile e il ritardo di 0,8 secondi impedisce che si attivi troppo presto.

vuotoMove_Setter() {
sta saltando = falso;
}

Passaggio 6: verifica il codice del controller del personaggio

Salva il tuo file e torna in Unity per testare il codice che hai scritto. Come la maggior parte dei compilatori, Unity fornisce informazioni su errori e altri problemi con il codice per semplificare la visualizzazione di ciò che potrebbe essere necessario modificare. Puoi visualizzare il codice completo per questo progetto sul nostro Git Hub pagina.

Creazione di controller di caratteri di unità

Puoi scegliere tra una varietà di approcci diversi durante la creazione di un controller di personaggi in Unity. L'uso della fisica è un'opzione, ma puoi anche utilizzare il sistema di controllo dei personaggi integrato, se lo desideri.

Esplorare diverse opzioni come questa è un ottimo modo per conoscere strumenti come Unity.