Annuncio pubblicitario
Una caratteristica sorprendente dell'economia di Internet è l'ascesa dei videogiochi indipendenti. Una volta che era il dominio esclusivo degli studi di tripla A da mille uomini e da molti milioni di dollari, è stato sviluppato un certo numero di set di strumenti portare le moderne risorse di sviluppo del gioco nelle mani di singoli o piccole collezioni ad hoc di programmatori e designer. Abbiamo discusso in precedenza di migliori giochi indie 10 giochi indie così buoni, dimenticherai che sono indieIn alcuni casi, tuttavia, potresti desiderare qualcosa di diverso dalla norma indipendente. Un gioco che segue valori indie, ma è realizzato con la qualità per cui sono noti i giochi AAA di fascia alta. Titoli come ... Leggi di più , quindi assicurati di controllare quelli per qualche ispirazione su ciò che può essere ottenuto con strumenti come Unity.
Questi team di sviluppo di giochi indipendenti hanno dimostrato un'agilità e una tolleranza al rischio che, in molti casi, consentono loro di spingere l'innovazione di gioco più velocemente rispetto alle loro controparti con budget elevati. Numerosi titoli indie di grande successo sono stati presentati in anteprima negli ultimi anni, tra cui Minecraft, Limbo, e Super Meat Boye anche se non hai le competenze per creare giochi come questo, puoi farlo crea un gioco usando Buildbox Come realizzare un videogioco in una settimana usando BuildboxEsiste un programma che rende lo sviluppo di giochi incredibilmente facile anche per coloro che non hanno assolutamente esperienza nella progettazione di videogiochi. Si chiama Buildbox. Ecco perché dovresti provarlo. Leggi di più .
Nel panorama in rapida evoluzione dello sviluppo di giochi indie, Unità è emerso come uno standard di fatto: il suo basso costo, la facilità d'uso e l'ampio set di funzionalità lo rendono ideale per un rapido sviluppo del gioco. L'unità è così flessibile, che puoi persino crea i tuoi controller di gioco personalizzati Come creare un controller di gioco personalizzato con Arduino e UnityHai mai desiderato progettare il tuo controller di gioco? È più facile di quanto pensi! Leggi di più con un po 'di fai da te saperlo!
Anche grandi studi come CCP (Developers of Eve online) utilizzalo per la prototipazione rapida di concetti di gioco. Unity fornisce un "motore di gioco in una scatola" - un motore di fisica e rendering con hook per diversi linguaggi di scripting, adattabile praticamente a qualsiasi genere di videogioco.
Mentre Unity fornisce un editor visivo per manipolare l'ambiente di gioco, Unity non è uno strumento per la creazione di giochi a "programmazione zero". Richiede di programmare per produrre risultati, ma offre anche uno strumento molto più flessibile e potente di qualsiasi programma "game maker".
L'unità non farà il lavoro per te, ma abbassa sostanzialmente la barriera all'ingresso. Partendo completamente da zero con C ++ e OpenGL, possono essere necessari giorni per arrivare al punto in cui c'è effettivamente qualcosa di rendering sullo schermo. Utilizzando Unity, sono necessari circa dieci secondi. Unity mette gli elementi base della creazione del gioco nelle mani di programmatori principianti in modo rapido e intuitivo.
Oggi ti guiderò attraverso tutto ciò che devi sapere per creare un gioco in Unity, che è suddiviso in dieci capitoli principali:
§1 – Versioni di Unity
§2 – Installazione di Unity
§3 - Una breve introduzione al paradigma orientato agli oggetti
§4 - Nozioni di base dell'unità
§5 – Esempio: elementi di base di un gioco
§6 – Scripting in Unity
§7 – Esempio: Scripting Pong
§8 – Esplorazione della documentazione / Ulteriori informazioni
§9 – Creazione del gioco / Compilazione in un'applicazione autonoma
§10-Note di chiusura
1. Versioni di Unity
Unity è disponibile in due versioni di base: la versione pro e la versione gratuita. Ci sono numero di differenze, ma, a grandi linee, la versione pro supporta una serie di miglioramenti visivi (come ombre morbide in tempo reale e post-elaborazione) e un gran numero di funzionalità relativamente minori che sono estremamente utili per i più complessi Giochi.
Detto questo, per la maggior parte dei giochi relativamente semplici che potresti voler costruire, la versione gratuita di Unity è perfettamente adeguata. Analizzeremo le differenze chiave di seguito in modo più dettagliato per gli interessati.
1.1 Prezzi
La versione gratuita di Unity è, ovviamente, gratuita. Tuttavia, ci sono alcune limitazioni: la versione gratuita di Unity non può essere concessa in licenza a nessuna società con un reddito annuo superiore a $100,000. Sebbene tali organizzazioni vadano oltre lo scopo di questa guida, se si sospetta che si possa diventare una tale organizzazione, è probabilmente consigliabile lanciarsi nella versione Pro.
La versione Pro di Unity è $75 un mese o $1500 per una licenza permanente e non ha limiti su cosa puoi fare con i giochi creati con essa. È disponibile anche una versione di prova gratuita di 30 giorni, che utilizzeremo per questa guida, al fine di offrirti una panoramica più completa possibile delle funzionalità disponibili. È disponibile anche una licenza per studenti di un anno Studica per $129.
1.2 Caratteristiche
Ci sono molte funzionalità assenti nella versione gratuita di Unity. Tuttavia, le differenze più importanti sono le seguenti: la versione gratuita di Unity manca di una serie di opzioni di rendering che lo consentono giochi dall'aspetto migliore e più veloci (supporto LOD, post-elaborazione dello spazio dello schermo, shader avanzati, ombre morbide in tempo reale e differite il rendering). Manca anche il pieno sistema di animazione meccanime alcuni strumenti di intelligenza artificiale.
In generale, per progetti complessi su larga scala o progetti in cui le prestazioni grafiche sono importanti, la versione pro è utile. Uso la versione pro, perché sviluppo giochi di realtà virtuale per Oculus Rift Recensione Oculus RiftLa realtà virtuale non è nuova, ma è finalmente accessibile e alla nostra portata. Dopo quattro anni e due prototipi di sviluppo, è arrivata l'edizione consumer finale di Oculus Rift. Leggi di più e il supporto post-elaborazione dello spazio dello schermo è necessario per interagire correttamente con l'auricolare.
2. Installazione di Unity
Unity è semplice da installare. Puoi scaricare il file eseguibile da unity3d.com/get-unity/download.
Una volta scaricato, eseguilo, quindi segui le istruzioni del programma di installazione. Al termine dell'installazione, verrà visualizzata una finestra intitolata "Attiva la tua licenza Unity". Seleziona la casella "attiva una prova gratuita di 30 giorni di Unity Pro" e quindi "OK".
Congratulazioni! Ora hai una prova di 30 giorni di Unity Pro. Alla scadenza del periodo di prova, se non desideri acquistare la versione pro, puoi passare alla versione gratuita e conservare i contenuti esistenti.
3. Una breve introduzione al paradigma orientato agli oggetti
Prima di iniziare con Unity, è importante approfondire un po 'le basi. Unity supporta entrambi C # e JavaScript per programmazione del gioco 7 lingue di sviluppo del gioco Unity da imparare: qual è la migliore?Vuoi iniziare lo sviluppo del gioco in Unity? Avrai bisogno di familiarità con una di queste lingue compatibili con Unity. Leggi di più ; lavoreremo con C # per questo tutorial.
Prima di tutto, se non hai mai programmato prima, metti da parte questo tutorial e trascorri qualche giorno a lavorare su Microsoft C # Language Primer finché non ti senti a tuo agio nell'usare la lingua per compiti semplici.
Se desideri qualcosa di leggermente diverso da C # (ma non necessariamente una lingua che puoi utilizzare in Unity), dai un'occhiata alla nostra guida alla sei linguaggi di programmazione più semplici per i principianti 6 più semplici linguaggi di programmazione da imparare per i principiantiImparare a programmare significa trovare la lingua giusta tanto quanto il processo di edificazione. Ecco i primi sei linguaggi di programmazione più facili per i principianti. Leggi di più .
Se hai programmato in precedenza in un linguaggio imperativo o orientato agli oggetti come C o Java, sfoglia il primer e familiarizza con il modo in cui C # differisce dalle altre lingue che hai usato in passato. In ogni caso, non procedere con il tutorial fino a quando non ti senti a tuo agio nel risolvere semplici problemi con C # (ad esempio, se dovessi chiedere di scrivere un programma che stampa i primi cento numeri primi, dovresti essere in grado di scrivere quel programma senza consultare Google).
Il concetto più importante da capire qui è il paradigma orientato agli oggetti Da dove ha preso il nome la programmazione "orientata agli oggetti"?Orientato agli oggetti non è solo una parola d'ordine casuale che senti nelle cerchie di programmazione. C'è un motivo dietro il nome - ma cosa? Unisciti a me mentre esploro alcuni dei fondamenti dei concetti di programmazione e spiego ... Leggi di più (abbreviato come OOP). Nei linguaggi orientati agli oggetti, i programmi sono divisi in unità funzionali chiamate Oggetti. Ogni oggetto ha le sue variabili e funzioni private. Vengono chiamate funzioni specifiche dell'oggetto metodi.
L'idea qui è la modularità: avendo ogni oggetto isolato e costringendo altri oggetti ad interagire con esso attraverso i suoi metodi, puoi ridurre il numero di possibili interazioni involontarie e, per estensione, bug. Puoi anche creare oggetti che puoi riutilizzare in seguito senza alcuna modifica. In Unity costruirai questi oggetti e li legherai a entità di gioco (il cui comportamento governeranno).
Gli oggetti vengono istanziati da classi: una classe è solo un file che definisce la definizione del tuo oggetto. Quindi, se vuoi un Mook oggetto che gestisce l'IA per un nemico nel tuo gioco, dovresti scrivere una classe "Mook" e quindi allegare quel file a ogni entità nemica. Quando giochi, ogni nemico sarà equipaggiato con una copia dell'oggetto "Mook".
Il collegamento di un nuovo script a un oggetto è simile al seguente:
Primo, seleziona l'oggetto e vai al Ispettore. Clicca sul Aggiungi componente pulsante.
Vai a nuova sceneggiatura, inserisci il nome desiderato e fai clic crea e aggiungi.
Ora hai un nuovo script che puoi modificare facendo doppio clic su di esso!
Un file di classe è simile al seguente:
utilizzando UnityEngine; public class Mook: MonoBehaviour {salute del galleggiante privato; void Start () {health = 100; } void Update () {if (salute> 0) {/ * Cerca un giocatore se incontri il giocatore sulla strada, uccidilo se ti spara, rimuovi un ammontare casuale di salute * /}} }
Analizziamo questo:
- Utilizzando UnityEngine: Questa riga dice a C # che vogliamo usare le librerie di Unity, che ci consentono di collegarci al motore di gioco di Unity.
- Classe pubblica Mook: MonoBehaviour:Questa riga dichiara la classe e il suo nome - Mook.
- Salute del galleggiante privato: Questo dichiara una variabile di classe privata (che può essere modificata solo dall'interno della classe). Alla variabile viene assegnato un valore in Inizio.
- Void Start (): Questo dichiara un metodo chiamato Inizio. L'inizio è un metodo speciale che viene eseguito una sola volta, all'avvio iniziale del gioco.
- Aggiornamento vuoto (): L'aggiornamento è un altro metodo speciale, che viene eseguito su ogni frame. Gran parte della tua logica di gioco andrà qui.
- // se incontri il giocatore sulla strada, uccidilo: Questa riga è un commento (qualsiasi riga che inizia con una doppia barra viene ignorata da C #). I commenti vengono utilizzati per ricordare a te stesso quali particolari bit di codice fanno. In questo caso, questo commento viene utilizzato per sostituire un blocco di codice più complicato che fa effettivamente ciò che il commento descrive.
Insieme a Inizio e Aggiornare, puoi istanziare i tuoi metodi con quasi qualsiasi nome. Tuttavia, i metodi creati non verranno eseguiti a meno che non vengano chiamati. Dichiariamo un metodo per un'ipotetica classe chiamata AddTwoNumbers che aggiunge due numeri insieme:
float pubblico addTwoNumbers (float a, float b) {return a + b; }
Questo dichiara un metodo pubblico (accessibile ad altri oggetti) che restituisce un float, chiamato AddTwoNumbers, che accetta due float come input (chiamato un' e B). Quindi restituisce la somma dei due valori come output.
Chiamare questo metodo dall'interno della stessa classe (diciamo, dall'interno Aggiornare) Somiglia a questo:
float result = addTwoNumbers (1, 2);
La chiamata del metodo da un'altra classe è simile:
istanza addTwoNumbers; float result = instance.addTwoNumbers (1, 2);
Ancora una volta, questo crea solo un'istanza della nostra classe, accede al metodo appropriato e gli fornisce i numeri che vogliamo aggiungere, quindi memorizza il risultato in risultato. Semplice.
Se lo script è collegato a un oggetto con proprietà speciali (come un emettitore di particelle) a cui non è possibile accedere sotto il normale set di parametri GameObject, puoi scegliere di trattarlo come un diverso tipo di entità di gioco usando il GetComponent metodo.
La sintassi per questo assomiglia a questo:
GetComponent().Giocare();
Se qualcosa di tutto ciò non ti è familiare, torna indietro e passa attraverso il primer C #. Ti risparmieremo molta frustrazione mentre procediamo.
4. Nozioni di base di Unity
In questa sezione, analizzeremo la meccanica di base del motore Unity. Il flusso di lavoro in Unity è simile al seguente:
- Crea un'entità per svolgere un ruolo nel gioco (vuoto GameObjects può essere utilizzato per attività logiche astratte).
- Scrivi o trova un file di classe e aggiungilo all'entità come script (usando il Aggiungi componente nel pulsante ispettore Visualizza.
- Correre > test > mettere a punto > ripetere fino a quando non funziona e passa all'elemento successivo del gioco.
Unity viene fornito con una serie di schede di visualizzazione di base che possono essere disposte in vari modi secondo il gusto dell'utente. I cinque grandi sono:
- Gioco: visualizza un'istanza corrente del gioco con cui puoi interagire e testare.
- Scena: fornisce una versione statica e modificabile di mondo di gioco.
- Ispettore: ti permette di modificare singole entità nel mondo di gioco selezionandole in editore scheda.
- Progetto: ti consente di sfogliare i file del progetto e di trascinare modelli, materiali e altre risorse in editore scheda per posizionarli nel mondo di gioco.
- Gerarchia: questa scheda mostra tutti gli oggetti nel mondo, consentendo di trovare oggetti distanti nella scena e entità padre tra loro facendo clic e trascinando.
Vedi lo schema seguente per le posizioni di tutte queste cose:
4.1 Entità unitarie
4.1.1 Maglie
Le maglie sono la via Geometria 3D è rappresentato in Unity. Puoi utilizzare l'Unity integrato primitivo oggetti (cubi, sfere, cilindri, ecc.) oppure importa i tuoi modelli 3D da un pacchetto di modellazione come Miscelatore Introduzione a Blender: 7 fantastici tutorial per principiantiLa modellazione 3D è un modo eccellente per esercitare la creatività rimanendo in contatto con il proprio lato tecnico. Ecco alcuni fantastici tutorial gratuiti. Leggi di più o maya Imparare Maya 2016: da dove iniziareMaya è uno strumento utilizzato per l'animazione 3D, ma viene fornito con una curva di apprendimento incredibilmente ripida. Che buon materiale didattico c'è? Leggi di più . Unity supporta una varietà di formati 3D, tra cui .fbx, e .3ds.
Gli strumenti di base per manipolare le mesh sono i pulsanti di ridimensionamento, rotazione e traduzione nell'angolo in alto a sinistra dell'interfaccia. Questi pulsanti aggiungono icone di controllo ai modelli nella vista dell'editor, che possono quindi essere utilizzati per manipolarli nello spazio. Per modificare la trama o le proprietà fisiche di un oggetto, selezionali e usa il ispettore per analizzare il Materiale e corpo rigido elementi.
4.1.2 Elementi della GUI
Gli sprite e il testo della GUI tradizionale possono essere visualizzati utilizzando il Testo della GUI e il Trama GUI GameObjects nell'editor. Tuttavia, un modo più robusto e realistico per gestire gli elementi dell'interfaccia utente è utilizzare Testo 3D e quadrilatero GameObjects (con texture trasparenti e uno shader trasparente non illuminato) per posizionare elementi HUD nel mondo di gioco come entità.
Nel gerarchia vista, questi elementi di gioco possono essere trascinati sulla fotocamera principale per renderli bambini, garantendo che si muovano e ruotino con la fotocamera.
Gli elementi della GUI (testo e trame) possono essere adattati per dimensioni e scala utilizzando i campi pertinenti nella scheda Impostazioni.
4.1.3 Materiali
I materiali sono combinazioni di trame e shaders Cinque importanti termini di gioco per PC spiegatiSe giochi su una console, i dettagli tecnici vengono gestiti per te. Alcuni giocatori lo preferiscono, ma i giocatori PC spesso godono del maggior grado di controllo che hanno sull'occhio di un gioco ... Leggi di più e può essere trascinato direttamente sugli oggetti di gioco dalla scheda progetto. Un gran numero di shader viene fornito con Unity Pro e puoi regolare la trama ad essi collegata utilizzando la scheda Impostazioni per un oggetto a cui sono applicati.
Per importare una trama, convertila in a .jpg, .png, o .bmpe trascinalo in risorse cartella nella directory del progetto Unity (che appare in I miei documenti per impostazione predefinita). Dopo alcuni secondi, nell'editor verrà visualizzata una barra di caricamento. Al termine, sarai in grado di trovare l'immagine come trama sotto il progetto scheda.
4.1.5 Luci
Le luci sono GameObjects quale progetto irradia sul mondo. Se non ci sono luci nella tua scena, tutti i poligoni sono disegnati allo stesso livello di luminosità, dando al mondo un aspetto piatto e sbiadito.
Le luci possono essere posizionate, ruotate e hanno diverse caratteristiche interne che è possibile personalizzare. Il intensità il cursore controlla la luminosità della luce e il gamma controlla la velocità con cui si attenua.
Le linee guida nel vista scena mostra la portata massima dell'illuminazione. Gioca con entrambe le impostazioni per ottenere l'effetto desiderato. Puoi anche regolare il colore della luce, il motivo (biscotto visualizzato sulla superficie a cui è puntata la luce e che tipo di bagliore appare sullo schermo quando si guarda direttamente la luce. Il cookie può essere utilizzato per simulare schemi di luce più realistici, creare drammatiche false ombre e simulare proiettori.
I tre principali tipi di luce sono individuare, punto, e direzionale.
Faretti avere una posizione nello spazio 3D e proiettare la luce solo in una direzione in un cono di angolo variabile. Questi sono buoni per torce elettriche, proiettori e, in generale, ti danno un controllo più preciso dell'illuminazione. I faretti possono proiettare ombre.
Luci puntiformi avere una posizione nello spazio 3D e proiettare la luce in modo uniforme in tutte le direzioni. Le luci puntiformi non proiettano ombre.
Luci direzionaliinfine, sono usati per simulare la luce del sole: proiettano la luce in una direzione come se fosse infinitamente lontana. Le luci direzionali influenzano ogni oggetto nella scena e possono produrre ombre.
4.1.6 Sistemi di particelle
UN Sistema di particelle è un GameObject che genera e controlla contemporaneamente centinaia o migliaia di particelle. Le particelle sono piccoli oggetti 2D ottimizzati visualizzati nello spazio 3D. I sistemi di particelle utilizzano rendering e fisica semplificati, ma possono visualizzare migliaia di entità in tempo reale senza balbuzie, rendendole ideali per fumo, fuoco, pioggia, scintille, effetti magici e altro ancora.
Ci sono molti parametri che puoi modificare per ottenere questi effetti e puoi accedervi generando un sistema di particelle sotto il editor di componenti > selezionando il sistema particellare > aprendo la scheda ispettore. Puoi modificare dimensioni, velocità, direzione, rotazione, colore e trama di ogni particella e impostare anche la maggior parte di quei parametri per cambiare nel tempo.
Sotto il collisione attributo, se lo si abilita e si imposta lo spazio di simulazione su mondo otterrai particelle che si scontreranno con oggetti nel mondo, che possono essere utilizzate per una serie di effetti realistici di particelle, tra cui pioggia, acqua in movimento e scintille.
5. Esempio: elementi di base di un gioco
Per questo tutorial, faremo un semplice gioco di pong - qualcosa che abbiamo coperto più volte nel fai-da-te prima:
- Arduino Classic Pong Come ricreare il classico gioco Pong usando ArduinoPong è stato il primo videogioco in assoluto a raggiungere il mercato di massa. Per la prima volta nella storia, il concetto di "videogioco" è stato introdotto nella casa di famiglia, grazie ad Atari 2600 -... Leggi di più
- Arduino OLED Pong Arduino Retro Gaming con display OLEDTi sei mai chiesto quanto lavoro ci vuole per scrivere i tuoi giochi retrò? Quanto è facile codificare Pong per Arduino? Leggi di più
In questa sezione, andremo a sistemare gli elementi principali: il tutorial di scripting verrà più avanti.
Innanzitutto, suddividiamo il gioco di Pong nei suoi componenti di base. Innanzitutto, abbiamo bisogno di due palette e una palla. La palla vola fuori dallo schermo, quindi avremo bisogno di un meccanismo per ripristinarla. Vogliamo anche che il testo mostri il punteggio attuale e, per il bene di mostrarti tutti gli elementi chiave di Unity, desideriamo un effetto particellare fantasioso quando colpisci la palla. L'intero gioco dovrà essere drammaticamente illuminato.
Questo si scompone in a oggetto palla (una sfera), a spawner, due oggetti di paddle con emettitori di particelle allegato un Entità di testo 3De a riflettore. Per questo tutorial, useremo il materiale fisico predefinito rimbalzo, con rimbalzare combinare impostato moltiplicare. Ecco come appare l'installazione, in dieci schermate:
Innanzitutto, crea un cubo prop per la pagaia.
Ridimensionalo in modo appropriato, duplicaloe metti a sfera tra le palette per la palla.
Quindi, crea un Oggetto 3DText e scala e posizione correttamente, cambiando il dimensione del font attributo per ottenere un'immagine meno pixelata.
Quindi, creane due sistemi di particelle, scegli le caratteristiche che desideri e attaccale ai paddle.
Successivamente, lo vorrai posizionare e ruotare la videocamera in modo da inquadrare correttamente la scena. Mentre la videocamera è selezionata, puoi vedere una piccola anteprima della vista della videocamera nell'angolo in basso a destra.
Prima di finire, dobbiamo creare due cubi aggiuntivi per essere paraurti, per evitare che la palla rimbalzi fuori dall'area di gioco. Possiamo renderli invisibili deselezionando l'opzione renderer mesh nel scheda ispettore.
Se colpisci il gioco, ora puoi vedere gli elementi di base del nostro gioco disposti. Non faranno ancora niente, ma ci arriveremo!
Ora che abbiamo questa impostazione, parleremo di ciò che è coinvolto nello scripting di questi elementi per creare un gioco.
6. Scripting in Unity
Una volta che hai uno script collegato a un oggetto, puoi modificarlo facendo doppio clic su di esso in ispettore. Questo si apre MonoDevelop, l'ambiente di sviluppo predefinito per Unity. In sostanza, Monodevelop è un editor di testo con funzionalità specificamente ottimizzate per la programmazione.
Parole chiave e commenti sono evidenziati in blu e verdee vengono visualizzati valori numerici e stringhe rosso. Se hai usato Eclisse o altri IDE, MonoDevelop è molto simile. Puoi costruire i tuoi script dall'interno dell'editor, per verificare la presenza di errori di sintassi, in questo modo:
In generale, per far sì che il tuo script interagisca con Unity, dovrai fare riferimento a elementi che l'oggetto che possiede lo script possiede (puoi vedere un elenco di questi elementi sotto il ispettore scheda quando viene selezionato l'oggetto rilevante). È quindi possibile chiamare metodi o impostare variabili per ciascuno di questi elementi per applicare le modifiche desiderate.
Se si desidera che uno script su un oggetto influisca sulle proprietà di un oggetto diverso, è possibile crearne uno vuoto GameObject nel tuo script e usa il ispettore per assegnarlo a un altro oggetto nella scena.
Un elenco degli elementi che un oggetto potrebbe avere è il seguente (preso dalla vista ispettore di una delle nostre palette nell'esempio sopra):
- Trasformare
- Cubo (filtro mesh)
- Box Collider
- Rendering mesh
Ognuno di questi aspetti dell'oggetto può essere influenzato dall'interno di una sceneggiatura. Successivamente, vedremo esattamente come.
6.1 Trasformazione
Le funzioni di trasformazione di un GameObject in Unity controllano i parametri fisici di quell'oggetto: il suo scala, suo posizione, e la sua orientamento. Puoi accedervi da uno script come questo:
transform.position = newPositionVector3; transform.rotation = newRotationQuaternion; transform.localScale = newScaleVector3;
Negli esempi precedenti, le variabili denominate sono dei tipi specificati nei nomi. Ci sono alcuni dettagli chiave qui: posizione e scala sono, come ti aspetteresti, memorizzati Vector3s. Puoi accedere a X, Y, e Z componenti di ciascuno (ad esempio, transform.position.y ti dà la distanza di un oggetto sopra il piano zero).
Tuttavia, per evitare blocco del gimbal, le rotazioni sono gestite come quaternions (vettori a quattro componenti). Poiché la manipolazione manuale dei quaternioni non è intuitiva, è possibile manipolare le rotazioni utilizzando gli angoli di Eulero utilizzando Quaternion. Eulero metodo così:
transform.rotation = Quaternion. Eulero (beccheggio, imbardata, rollio);
Se desideri spostare gli oggetti senza problemi da un luogo a un altro, troverai Slerp utile metodo per quaternioni e vector3s. Slerp accetta tre argomenti: lo stato corrente, lo stato finale e la velocità del cambiamento e si interpola uniformemente tra loro alla velocità data. La sintassi è simile al seguente:
transform.position = Vector3.Slerp (startPositionVector3, newDestinationVector3, 1);
6.2 Renderer
Le funzioni di rendering in Unity ti consentono di controllare il modo in cui le superfici degli oggetti di scena vengono visualizzate sullo schermo. Puoi riassegnare la trama, cambiare il colore e cambiare lo shader e la visibilità dell'oggetto. La sintassi è simile al seguente:
renderer.enabled = false; renderer.material.color = new Color (0, 255, 0); renderer.material.mainTexture = myTexture; renderer.material.shader = newShader;
Molti di questi hanno funzioni abbastanza chiare. Il primo esempio rende invisibile l'oggetto in questione: un trucco utile in diverse situazioni. Il secondo esempio assegna un nuovo Colore RGB (vale a dire verde) per l'oggetto in questione. Il terzo assegna la trama diffusa principale a una nuova variabile di trama. L'ultimo esempio cambia lo shader del materiale dell'oggetto in una variabile shader appena definita.
6.3 Fisica
Unity viene fornito con un motore fisico integrato - qualcosa del genere giochi sandbox di fisica Smash, Drive & Build: 3 fantastici simulatori di sandbox di fisica Leggi di più tutti usano. Ciò consente di assegnare le proprietà fisiche degli oggetti e di gestire i dettagli della loro simulazione. In generale, piuttosto che tentare di implementare la propria fisica usando un libro di testo e il sistema di trasformazione, è più semplice e robusto utilizzare il motore fisico di Unity nella massima misura possibile.
Tutti i puntelli di fisica richiedono collider. Tuttavia, la simulazione stessa viene gestita da a corpo rigido, che può essere aggiunto in ispettore Visualizza. I corpi rigidi possono essere cinematica o nonkinematic.
I puntelli di fisica cinematica si scontrano con (e producono effetti) puntelli di fisica non cinematica che li circondano, ma non sono interessati dalla collisione stessa. I puntelli cinematici statici sono gli oggetti immobili proverbiali e gli oggetti cinematici in movimento sono i proverbiale forza inarrestabile (per la cronaca, quando si scontrano, passano semplicemente attraverso ciascuno di essi altro).
Oltre a ciò, puoi regolare la resistenza angolare dell'oggetto (quanta energia ci vuole per farlo roteare), cambiare la sua massa, dettare se è influenzato o meno dalla gravità e applicare forze ad esso.
Esempi:
rigidbody.angularDrag = 0.1f; rigidbody.mass = 100; rigidbody.isKinematic = false; rigidbody.useGravity = true; corpo rigido. AddForce (transform.forward * 100);
Questi sono tutti abbastanza autoesplicativi. L'unica cosa da notare qui è l'uso di transform.forward. Vector3 ha tutti tre componenti (.inoltrare, .su, e .destra) ad essi associati, a cui è possibile accedere e che ruotano con essi (inoltrare è la direzione della freccia blu nell'editor). Il transform.forward la parola chiave è semplicemente il vettore in avanti per l'oggetto corrente con magnitudine 1. Può essere moltiplicato per un galleggiante per creare più forza sull'oggetto. Puoi anche fare riferimento transform.up e transform.righte negarli per ottenere i loro rovesci.
6.4 Collisione
Spesso, durante la creazione di un gioco, ti piacerebbe che una collisione causasse un cambio di stato nel tuo codice, oltre alla semplice simulazione fisica. Per questo, avrai bisogno di a metodo di rilevamento delle collisioni.
C'è un certo lavoro di preparazione necessario per rilevare le collisioni in Unity. Innanzitutto, almeno uno degli oggetti nella collisione necessita di a corpo rigido non cinematico attaccato ad esso. Entrambi gli oggetti devono avere collettori corretti, impostati per essere non trigger. La velocità totale di entrambi gli oggetti deve essere abbastanza bassa da scontrarsi effettivamente, anziché semplicemente saltarsi l'un l'altro.
Se hai preso tutto ciò di cui puoi occuparti, puoi verificare la collisione inserendo uno speciale metodo di rilevamento delle collisioni in uno script attaccato all'oggetto con cui desideri verificare la collisione. Il metodo sarà simile al seguente:
void OnCollisionEnter (Collision other) {// fai le cose qui. }
Questo metodo verrà eseguito automaticamente durante il primo fotogramma in cui un altro oggetto tocca l'oggetto. L'entità di collisione altro è un riferimento all'oggetto che hai colpito. Ad esempio, puoi fare riferimento a questo gameobject, corpo rigido, e trasformare caratteristiche per manipolarlo in vari modi. Mentre OnCollisionEnter è probabilmente la funzione più comune che utilizzerai, puoi anche utilizzare OnCollisionExit e OnCollisionStay (con sintassi e utilizzo altrimenti identici), che si attivano durante il primo fotogramma in cui si interrompe la collisione con un oggetto e durante ogni fotogramma che si scontrano con un oggetto, rispettivamente.
A volte, può anche essere utile fare ciò che viene chiamato raycasting. Nel raycasting, una linea infinitamente sottile (a raggio) viene lanciato in tutto il mondo da una certa origine, lungo un certo vettore e, quando colpisce qualcosa, vengono restituiti la posizione e altri dettagli della prima collisione. Il codice per un raycast è simile al seguente:
Raycast Hit hit; if (Fisica. Raycast (transform.position, -Vector3.up, out hit)) {float distanceToGround = hit.distance; }
Questo lancia un raggio dalla posizione dell'oggetto corrente lungo -Vector3.up (verso il basso) e collega la variabile colpire al primo oggetto con cui si scontra. Una volta che il tuo raggio ha colpito qualcosa, puoi accedervi hit.distance per determinare quanto è distante, oppure colpire. GameObject per manipolare l'oggetto che colpisci.
Raycast di questo tipo possono essere utilizzati per i tiratori per determinare a cosa punta la pistola o per selezionare gli oggetti quando la telecamera li guarda, o per determinati stili di movimento meccanico.
6.5 Correzione temporale
Un fattore importante da tenere a mente quando si manipolano oggetti in questo modo ha a che fare con frequenza dei fotogrammi. Indipendentemente dalla cura con cui ottimizzi, i framerate varieranno sempre e non desideri che la velocità del tuo gioco vari di conseguenza. Se qualcun altro esegue il tuo gioco su un computer più veloce di quello su cui lo hai sviluppato, non vuoi che il gioco funzioni a doppia velocità.
Il modo corretto per questo è moltiplicando i valori che stai utilizzando per il tempo impiegato per il rendering dell'ultimo fotogramma. Questo viene fatto usando Time.deltaTime. Ciò modifica efficacemente la velocità di qualsiasi variabile da cui stai incrementando ogni fotogramma modifica per fotogramma per cambio al secondoe probabilmente dovresti apportare questa modifica a qualsiasi valore stai incrementando o diminuendo ogni frame.
6.6 Sorgenti audio e ascoltatori
Ora che abbiamo spiegato come creare, rendere e controllare gli oggetti, parliamo dell'altro senso che i giochi per computer possono servire: vale a dire, suono. Unity supporta due tipi di suoni: 2D e 3D suoni. I suoni 3D variano il loro volume in base alla distanza e si distorcono mentre si muovono rispetto alla telecamera; I suoni 2D no.
I suoni 2D sono appropriati per la voce fuori campo e la musica di sottofondo, mentre i suoni 3D si applicano ai suoni generati da eventi nel mondo. Per cambiare se un suono è 3D o no, selezionalo in progetto visualizzare, passare a ispettore visualizzare e selezionare l'opzione appropriata dal menu a discesa, quindi premere reimportare pulsante.
Per riprodurre effettivamente il suono, devi allegare un Sorgente Audio a un puntello (il puntello da cui si desidera originare il suono, nel caso di un suono 3D). Quindi dovrai aprire il AudioClip campo e selezionare il file audio.
Puoi usare myAudioSource. Pausa() e myAudioSource. Giocare() per controllare quei file audio. È possibile regolare i comportamenti di falloff, il volume e lo spostamento doppler dei suoni sotto il ispettore scheda per la fonte audio.
6.7 Ingresso
Un gioco che non riceve alcun input dall'utente non è in gran parte un gioco. Esistono molti tipi diversi di input che puoi leggere e quasi tutti sono accessibili tramite Ingresso e Chiave oggetti. Di seguito sono riportate alcune istruzioni di input di esempio (che hanno un valore valutato per ogni frame).
Vector3 mousePos = Input.mousePosition; bool isLeftClicking = Input. GetMouseButton (0); bool isPressingSpace = Input. GetKey (KeyCode. Spazio);
Le funzioni di queste righe sono per lo più autoesplicative. Utilizzando questi tre tipi di riferimento di input, è possibile ricostruire gli schemi di controllo della maggior parte dei moderni giochi per computer 3D.
6.8 Debug di uno script
Supponiamo che uno script non funzioni. Come dice il bravo dottore, a te possono capitare bangup e hangup. Se ci sono veri e propri errori di sintassi con il tuo C #, il gioco generalmente rifiuta di essere eseguito quando premi play e vengono forniti alcuni messaggi di errore abbastanza utili se costruire gli script all'interno dell'editor. Vedi sotto:
Questi bug non sono in genere i più difficili da correggere. Ciò che può essere più problematico sono sottili errori semantici, in cui hai scritto con successo un file pieno di C # valido, ma non uno che fa ciò che pensavi sarebbe. Se hai uno di questi errori e hai problemi a rintracciarlo, ci sono alcune cose che puoi provare per migliorare la situazione.
Il primo è mettere in pausa l'esecuzione del gioco e controllare la console. Puoi mettere in pausa il gioco facendo clic su pausa icona nella parte centrale superiore dell'editor, quindi selezionando consolle dal fondo del finestra menu (o premendo Ctrl > Cambio > C). Anche se non ci sono errori, gli avvisi possono comunque aiutare a fornire alcuni indizi su cosa potrebbe andare storto.
Se questo non funziona, puoi anche provare a farti un'idea dello stato del tuo script stampando lo stato delle variabili interne per verificare che il programma stia facendo quello che pensi stia facendo. Puoi usare Debug. Registro (stringa) per stampare il contenuto di una stringa sulla console quando l'esecuzione del programma raggiunge quella riga. In generale, se lavori all'indietro da quello che pensi dovrebbe accadere attraverso le cose che dovrebbero essere rendendolo possibile, alla fine raggiungerai un punto in cui le tue stampe di debug non fanno quello che ti aspetti che facciano fare. Ecco dove si trova il tuo errore.
7. Esempio: Scripting Pong
Per costruire Pong, suddividiamo il gioco nei suoi elementi principali: abbiamo bisogno di una palla che rimbalza avanti e indietro tra le palette per aumentare velocità, abbiamo bisogno di un tabellone segnapunti che sappia quando le palle hanno superato le palette, e abbiamo bisogno di un meccanismo per riavviare la palla quando accade. Un buon primo passo sarebbe quello di aggiungere un corpo rigido non cinematico alla palla, due corpi rigidi cinematici al pagaie, disabilitare la gravità per tutti loro e assegnare un materiale fisico appropriato dalle risorse standard (rimbalzo con rimbalzare combinare impostato moltiplicare).
Di seguito, puoi visualizzare la sceneggiatura della palla con commenti esplicativi. La palla deve raggiungere alcuni obiettivi di base: dovrebbe rimbalzare secondo uno schema complicato, mantenendo sempre movimento su entrambi gli assi, e dovrebbe accelerare a un ritmo impegnativo ma non impossibile in orizzontale direzione.
BallHandler.cs
Successivamente, dobbiamo scrivere la nostra paletta, che puoi vedere di seguito. La paletta deve muoversi su e giù in risposta alla pressione dei tasti (ma non al di fuori di certi limiti). Deve anche attivare il sistema particellare quando si scontra con qualcosa.
PaddleHandler.cs
Successivamente, abbiamo bisogno dell'IA nemica: qualcosa che farà sì che la paletta del nemico si insegua verso la palla a una velocità fissa. Per questo, utilizzeremo Vector3.Slerp per la massima semplicità. Vorremmo anche lo stesso comportamento delle particelle che vediamo sulla nostra paletta.
EnemyAI.cs
Infine, abbiamo bisogno di uno script per aggiornare il tabellone e ripristinare la palla quando esce dai limiti.
ScoreboardUpdater.cs
Con quegli script allegati e i riferimenti compilati, quando eseguiamo il nostro gioco di Pong, sperimentiamo il gameplay!
Puoi scarica la mia demo di Pong, se desideri vedere tutto ciò che ho descritto in azione. Funziona su sistemi Windows, Mac e Linux.
8. Esplorazione della documentazione / Ulteriori informazioni
Unity è un motore complesso con molte più funzioni di quelle che potrebbero essere coperte in una guida di questo stile, e questo prima di includere l'ampia gamma di estensioni Unity (gratuite e commerciali) disponibili su Internet. Questa guida ti darà un forte punto di partenza per lo sviluppo di un gioco, ma l'autoeducazione è un'abilità importante in ogni sforzo, e doppiamente qui.
Una risorsa cruciale qui è il Unity ScriptReference. ScriptReference è un database di ricerca, disponibile sia per C # che per Javascript, che ha un elenco di ogni comando e caratteristica di Unity, con descrizioni delle loro funzioni e brevi esempi di sintassi.
Se riscontri problemi con l'editor e l'interfaccia di Unity, o semplicemente come i tutorial video come questione di preferenza, c'è un lungo elenco di alta qualità Tutorial video Unity I migliori tutorial 3D Unity per principiantiVuoi sviluppare giochi con Unity, ma non sai da dove iniziare? Prova oggi uno di questi fantastici tutorial su Unity 3D. Leggi di più a disposizione. Più ampio (ma meno ampio) tutorial di testo per Unity sono disponibili anche da CatLikeCoding.
Infine, se hai domande che esulano dall'ambito della documentazione o delle esercitazioni, puoi porre domande specifiche all'indirizzo risposte. Unity3d.com. Ricorda che le risposte sono fornite da volontari, quindi rispetta il loro tempo e cerca prima nel database per assicurarti che la tua domanda non abbia già ricevuto risposta.
9. Creazione del gioco / Compilazione in un'applicazione autonoma
Quando hai costruito qualcosa di cui sei orgoglioso (o hai finito di clonare il nostro esempio di Pong leggermente ingannevole per la pratica), è tempo di sposta il tuo gioco dall'editor e trasformalo in qualcosa che puoi pubblicare su Internet e costringere i tuoi amici e la tua famiglia a giocare. Per fare ciò, dovrai creare un'applicazione autonoma. La buona notizia è che in Unity è molto, molto semplice. Ci sono, tuttavia, alcuni potenziali singhiozzi che dovresti fare attenzione.
Per cominciare, sappi che puoi costruire solo un progetto privo di errori. A tal fine, assicurati di avere la console aperta mentre costruisci: ci sono alcune condizioni di errore che il gioco ignorerà nell'editor, ma interromperà comunque un tentativo di compilazione. Questo scarica solo i messaggi di errore sulla console, senza risultati visibili sullo schermo, il che può essere frustrante se si dimentica di controllare. Una volta ottenuta la compilazione del gioco senza errori, tuttavia, puoi selezionare Crea impostazioni sotto il File menu o premere Ctrl > Cambio
> B. Verrà visualizzata una semplice finestra di dialogo che ti consente di creare il tuo gioco per diverse piattaforme.
Il processo da lì è autoesplicativo: seleziona le tue opzioni e premi costruire; il gioco ti chiederà di installare una directory e inserirà sia la directory eseguibile che quella dati. Questi due file possono essere compressi insieme e distribuiti (assicurati solo di non addebitare costi per un gioco creato nella demo di Unity, in quanto ciò viola i termini di servizio).
10. Note di chiusura
Come con qualsiasi strumento di sviluppo di giochi, la chiave del successo con Unity è lo sviluppo iterativo. Devi costruire con incrementi gestibili: sii ambizioso, in ogni caso, ma sii ambizioso in piccoli pezzi e disponi quei pezzi tali che, anche se non raggiungi la tua massima ambizione, finirai almeno con una coerente Prodotto.
Ottieni prima gli elementi più cruciali: pensa a te prodotto minimo praticabile, la cosa più semplice e con le ossa nude che potresti creare e che hai ancora la sensazione di aver realizzato qualcosa di utile. Raggiungi quel progetto minimo realizzabile prima di passare ad ambizioni più grandi.
Questo tutorial ti dà un buon punto di partenza, ma il modo migliore per imparare l'Unità è costruire un gioco. Inizia a costruire un gioco, colma le lacune nelle tue conoscenze man mano che si presentano e il flusso graduale di conoscenza eroderà le cose che non conosci sorprendentemente rapidamente.
Se hai letto tutto questo e sei un po 'sopraffatto dalla codifica richiesta con Unity, assicurati di controllare come impara lo sviluppo del gioco con Unity Learn Unity Learn è il modo più semplice per padroneggiare lo sviluppo del giocoVuoi iniziare a sviluppare i tuoi giochi? Unity Learn è il modo migliore e più semplice per imparare e padroneggiare ciò che devi sapere. Leggi di più e leggi anche la nostra guida su come realizzare videogiochi senza alcuna programmazione Come realizzare videogiochi senza alcuna programmazioneVuoi creare un videogioco ma non riesci a programmare? Quindi utilizza un kit di costruzione di videogiochi che ti consente di creare giochi senza alcuna codifica richiesta! Leggi di più .
Unity è uno strumento potente e, con un po 'di esplorazione, puoi realizzare progetti impressionanti più velocemente di quanto ti aspetti. Facci sapere cosa hai creato nei commenti qui sotto: ci piacerebbe vedere!
Scrittore e giornalista con sede nel sud-ovest, Andre è garantito per rimanere funzionale fino a 50 gradi Celcius ed è impermeabile fino a una profondità di dodici piedi.