Publicitate

O caracteristică surprinzătoare a economiei internetului este creșterea jocurilor video indie. Odată ce domeniul exclusiv al studiourilor triple-A de mii de oameni, multi-milioane de dolari, a fost dezvoltat un număr de instrumente care aduce resurse moderne de dezvoltare a jocurilor în mâinile unor persoane sau colecții mici, ad-hoc de programatori și designeri. Am discutat anterior despre cele mai bune jocuri indie 10 jocuri Indie atât de bune, vei uita că sunt independentePot exista totuși momente în care doriți ceva diferit de norma indie. Un joc care urmărește valorile indie, totuși este făcut cu calitatea pentru care sunt cunoscute jocurile AAA de top. Titluri de genul ... Citeste mai mult , deci asigurați-vă că verificați unele inspirații cu privire la ce se poate realiza cu instrumente precum Unity.

Acest ghid este disponibil pentru a fi descărcat ca PDF gratuit. Descărcați Programarea unui joc cu Unity: Ghidul pentru începători acum. Simțiți-vă liber să copiați și să le împărtășiți cu prietenii și familia.
instagram viewer

Aceste echipe de dezvoltare a jocurilor indie au demonstrat o agilitate și o toleranță la risc care, în multe cazuri, le permite să impulsioneze inovația gameplay-ului mai repede decât omologii lor mari din buget. O serie de titluri indie de succes șocant au avut premiera în ultimii ani, inclusiv Minecraft, Depozit de vechituri, și Super Carne Boyși chiar dacă nu aveți abilități pentru a face jocuri ca acesta, puteți faceți un joc folosind Buildbox Cum să faci un joc video într-o săptămână folosind BuildboxExistă un program care face dezvoltarea jocului incredibil de ușoară chiar și pentru cei fără experiență în proiectarea jocurilor video. Se numește Buildbox. Iată de ce ar trebui să încercați. Citeste mai mult .

În peisajul în evoluție rapidă a dezvoltării jocurilor indie, Unitate a apărut ca un standard de facto: costul său redus, ușurința de utilizare și setul larg de caracteristici îl fac ideal pentru dezvoltarea rapidă a jocului. Unitatea este atât de flexibilă, încât poți chiar creează-ți propriul tău controlor de jocuri personalizate Cum se face un controlor de joc personalizat cu Arduino și UnityAți dorit vreodată să vă proiectați propriul controler de joc? Este mai ușor decât crezi! Citeste mai mult cu un pic de bricolaj știu cum!

Chiar și studiouri mari, cum ar fi CCP (Dezvoltatori de Eve Online) folosiți-l pentru prototipuri rapide pentru concepte de joc. Unity oferă un „motor de joc într-o cutie” - un motor de fizică și redare cu cârlige pentru mai multe limbaje de script, adaptabile la aproape orice gen de jocuri video.

În timp ce Unity oferă un editor vizual pentru manipularea mediului de joc, Unity nu este un instrument de creare a jocului „programare zero”. Îți cere să te programezi pentru a produce rezultate, dar îți oferă și un instrument mult mai flexibil și mai puternic decât ar putea orice program de „producător de jocuri”.

Unity nu va face munca pentru tine, dar scade substanțial bariera de intrare. Pornind complet de la zero cu C ++ și OpenGL, poate fi nevoie de câteva zile pentru a ajunge la punctul în care există de fapt ceva pe ecran. Folosind Unity, durează aproximativ zece secunde. Unity pune elementele de bază ale creării jocului în mâinile programatorilor începători într-un mod rapid, intuitiv.

Astăzi vă voi ghida prin tot ceea ce trebuie să știți pentru a face un joc în Unity, care este împărțit în zece capitole principale:

§1 - Versiuni ale unității

§2 - Instalarea unității

§3 - Scurtă introducere în paradigma orientată spre obiecte

§4 – Bazele unității

§5 - Exemplu: Elemente de bază ale unui joc

§6 - Scripturi în Unity

§7 - Exemplu: Scripting Pong

§8 - Explorarea documentației / Aflarea mai mult

§9 - Construirea jocului / Compilarea către o aplicație autonomă

§10-Note de închidere

1. Versiuni ale unității

Unity vine în două arome de bază: versiunea pro și versiunea gratuită. Există un număr de diferențe, dar, în linii mari, versiunea pro acceptă o serie de îmbunătățiri vizuale (cum ar fi umbrele moi și în timp real post-procesare) și un număr mare de caracteristici relativ minore care sunt extrem de utile pentru mai complexe jocuri.

Acestea fiind spuse, pentru majoritatea jocurilor relativ simple pe care poate doriți să le construiți, versiunea gratuită a Unity este perfect adecvată. Vom descompune diferențele cheie de mai jos pentru mai multe detalii.

1.1 Prețuri

Versiunea gratuită a Unity este, desigur, gratuită. Cu toate acestea, există câteva limitări: versiunea gratuită a Unity nu poate fi licențiată pentru nicio companie cu un venit anual mai mare de $100,000. În timp ce astfel de organizații nu depășesc domeniul de aplicare al acestui ghid, dacă bănuiți că puteți deveni o astfel de organizație, este probabil înțelept să apariți pentru versiunea Pro.

Versiunea Pro a Unity este $75 o lună sau $1500 pentru o licență permanentă și nu are limite în ceea ce poți face cu jocurile create cu ea. Există, de asemenea, o probă gratuită de 30 de zile, pe care o vom folosi pentru acest ghid, pentru a vă oferi o imagine de ansamblu cât mai completă a funcțiilor disponibile. O licență de student de un an este de asemenea disponibilă prin Studica pentru $129.

1.2 Caracteristici

Există multe funcții absente în versiunea gratuită a Unity. Cu toate acestea, cele mai importante diferențe sunt următoarele: versiunea gratuită a Unity nu are o serie de opțiuni de redare care permit jocuri cu aspect mai bun, care rulează mai rapid (suport LOD, post-procesare în spațiul ecranului, shadere avansate, umbre moale în timp real și amânate redare). De asemenea, îi lipsește întregul sistem de animație mecanim, și unele instrumente AI.

În general, pentru proiecte complexe, pe scară largă, sau proiecte în care performanțele grafice sunt importante, versiunea pro merită. Folosesc versiunea pro, deoarece dezvolt jocuri de realitate virtuală pentru Oculus Rift Oculus Rift ReviewRealitatea virtuală nu este nouă, dar este în sfârșit accesibilă și în limitele noastre. După patru ani și două prototipuri de dezvoltare, a sosit ediția consumatorului final al Oculus Rift. Citeste mai mult , iar suportul de post-procesare a spațiului ecranului este necesar pentru a interacționa corect cu setul cu cască.

2. Instalarea Unity

Unity este simplu de instalat. Puteți descărca executabilul din unity3d.com/get-unity/download.

Odată descărcat, executați-l și apoi urmați instrucțiunile instalatorului. După terminarea instalării, va apărea o fereastră intitulată „activează licența ta Unity”. Bifează caseta marcată „activați o încercare gratuită de 30 de zile a programului Unity Pro” și apoi „OK”.

Felicitări! Acum aveți un proces de 30 de zile pentru Unity Pro. Când procesul expiră, dacă nu doriți să cumpărați versiunea profesională, puteți trece la versiunea gratuită și să vă păstrați conținutul existent.

3. O scurtă introducere în paradigma orientată spre obiecte

Înainte de a începe cu Unity, este important să trecem puțin peste elementele de bază. Unity suportă ambele C # și JavaScript pentru programarea jocului 7 Limbi de dezvoltare a jocului unitar de învățat: care este cel mai bun?Vrei să începi dezvoltarea jocului în Unity? Veți avea nevoie de familiarizare cu unul dintre aceste limbaje compatibile cu Unity. Citeste mai mult ; vom lucra cu C # pentru acest tutorial.

În primul rând, dacă nu ați mai programat până acum, lăsați acest tutorial deoparte și petreceți câteva zile lucrând prin Microsoft C # Primerul limbajului până când vă simțiți confortabil folosind limba pentru sarcini simple.

Dacă doriți ceva puțin diferit de C # (dar nu neapărat o limbă pe care o puteți folosi în Unity), aruncați o privire la ghidul nostru pentru șase limbaje de programare cele mai ușoare pentru începători 6 limbi de programare cel mai ușor de învățat pentru începătoriÎnvățarea la program înseamnă a găsi o limbă potrivită la fel de mult ca și despre procesul de edificare. Iată primele șase limbi de programare cele mai ușoare pentru începători. Citeste mai mult .

Dacă ați programat înainte într-un limbaj imperativ sau orientat către obiect, cum ar fi C sau Java, săriți primerul și să vă familiarizați cu modul în care C # diferă de alte limbi pe care le-ați folosit în trecut. În orice caz, nu continuați tutorialul până nu vă simțiți confortabil rezolvând probleme simple cu C # (de exemplu, dacă ar trebui să vă întreb tu pentru a scrie un program care tipărește primele sute de numere prime, ar trebui să poți scrie acel program fără a te consulta Google).

Cel mai important concept de înțeles aici este paradigma orientată pe obiecte De unde a obținut numele programării „Orientate pe obiecte”?Orientat pe obiecte nu este doar un cuvânt cheie aleatoriu pe care îl auziți în cercurile de programare. Există un motiv în spatele numelui - dar ce? Alăturați-vă mie în timp ce explorez câteva dintre fundamentele conceptelor de programare și explic ... Citeste mai mult (prescurtat ca OOP). În limbajele orientate pe obiect, programele sunt împărțite în unități funcționale numite Obiecte. Fiecare obiect are propriile sale variabile și funcții private. Funcțiile specifice obiectului sunt numite metode.

Ideea aici este modularitatea: prin izolarea fiecărui obiect și forțarea altor obiecte să interacționeze cu acesta prin metodele sale, puteți reduce numărul de interacțiuni neintenționate posibile - și, prin extensie, gandaci. De asemenea, puteți crea obiecte pe care le puteți reutiliza mai târziu fără nicio modificare. În Unity, veți crea aceste obiecte și le veți atașa entități de joc (al cărui comportament vor guverna).

Obiectele sunt instanțiate din clase: o clasă este doar un fișier care stabilește definiția obiectului tău. Deci, dacă doriți un Mook obiect care gestionează AI pentru un inamic din jocul dvs., ar fi scris o clasă „Mook” și apoi atașați fișierul la fiecare entitate inamică. Când rulați jocul dvs., fiecare dușman va fi echipat cu o copie a obiectului „Mook”.

Atașarea unui script nou la un obiect arată astfel:

Programarea unui joc cu unitatea: Ghidul începătorului Programul de unitate joc 1

Primul, selectați obiectul și du-te la Inspector. Faceți clic pe butonul Adaugă componenta buton.

Programarea unui joc cu unitatea: Ghidul începătorului Programul de unitate joc 2

Mergi la script nou, introduceți numele dorit și faceți clic pe creați și adăugați.

Programarea unui joc cu unitatea: Ghidul începătorului jocul programului de unitate 3

Acum aveți un script nou pe care îl puteți edita făcând dublu clic pe el!

Un fișier de clasă arată așa:

folosind UnityEngine; public class Mook: MonoBehaviour {private float health; void Start () {sănătate = 100; } void Actualizare () {if (sănătate> 0) {/ * Căutați un jucător dacă îl întâlniți pe jucător pe drum, ucideți-l dacă primiți împușcături, eliminați o cantitate aleatorie de sănătate * /}} }

Haideți să deturnăm acest lucru:

  • Folosind UnityEngine: Această linie îi spune lui C # că dorim să folosim bibliotecile Unity, care ne permit să ne conectăm la motorul jocului Unity.
  • Clasa publică Mook: MonoBehaviour:Această linie declară clasa și numele acesteia - Mook.
  • Sănătatea plutitorului privat: Aceasta declară o variabilă de clasă privată (care poate fi modificată doar din interiorul clasei). Variabilei i se oferă o valoare în start.
  • Start Void (): Aceasta declară o metodă numită start. Start este o metodă specială care se rulează o singură dată, când jocul se lansează inițial.
  • Actualizare Void (): Actualizarea este o altă metodă specială, care rulează pe fiecare cadru. Cea mai mare parte a logicii dvs. de joc va merge aici.
  • // dacă întâlnești jucătorul pe drum, ucide-l: Această linie este un comentariu (orice linie care începe cu o oblică dublă este ignorată de C #). Comentariile sunt utilizate pentru a vă reaminti ce face anumite biți de cod. În acest caz, acest comentariu este folosit pentru a stabili un bloc de cod mai complicat, care face efectiv ceea ce descrie comentariul.

Impreuna cu start și Actualizați, vă puteți instantana propriile metode cu aproape orice nume. Cu toate acestea, metodele pe care le creați nu se execută decât dacă sunt apelate. Să declaram o metodă pentru o clasă ipotetică numită addTwoNumbers care adaugă două numere împreună:

public float addTwoNumbers (float a, float b) {return a + b; }

Aceasta declară o metodă publică (accesibilă altor obiecte) care returnează un float, numit addTwoNumbers, care ia două intrări flotante ca intrare (numită A și b). Apoi returnează suma celor două valori ca ieșire.

Apelarea acestei metode din interiorul aceleiași clase (să zicem, din interior) Actualizați) arata asa:

float result = addTwoNumbers (1, 2);

Apelarea la această metodă este similară:

instanța addTwoNumbers; float result = instance.addTwoNumbers (1, 2);

Din nou, aceasta creează doar o instanță a clasei noastre, accesează metoda corespunzătoare și îi alimentează numerele pe care vrem să le adăugăm, apoi stochează rezultatul în rezultat. Simplu.

Dacă script-ul dvs. este atașat la un obiect care are proprietăți speciale (precum un emițător de particule) la care nu poate fi accesat în setul normal de parametri GameObject, puteți alege să-l tratați ca un alt tip de entitate de joc folosind GetComponent metodă.

Sintaxa pentru asta arată astfel:

GetComponent().Joaca();

Dacă oricare dintre acestea nu vă este cunoscut, mergeți înapoi și parcurgeți primerul C #. Vă va economisi multă frustrare pe măsură ce vom continua.

4. Bazele unității

În această secțiune, vom merge prin drum prin mecanica de bază a motorului Unity. Fluxul de lucru din Unity merge așa ceva:

  1. Creați o entitate care să îndeplinească un rol în joc (gol GameObjects poate fi folosit pentru sarcini logice abstracte).
  2. Scrieți sau găsiți un fișier de clasă și adăugați-l la entitate ca script (folosind funcția Adaugă componenta butonul din butonul inspector vedere.
  3. Alerga > Test > depanare > repeta până când funcționează și trece la următorul element al jocului.

Unity vine cu o serie de file de vizualizare de bază, care pot fi prezentate în diverse moduri, pe gustul utilizatorului. Cele cinci mari sunt:

  1. Joc: afișează o instanță de rulare a jocului cu care poți interacționa și testa.
  2. Scenă: oferă o versiune statică, modificabilă a lumea jocurilor.
  3. Inspector: vă permite să modificați entitățile individuale din lumea jocului, selectându-le în editor tab.
  4. Proiect: vă permite să parcurgeți fișierele proiectului și să trageți modele, materiale și alte resurse în editor fila pentru a le plasa în lumea jocului.
  5. Ierarhie: această filă arată toate obiectele din lume, permițându-ți să găsești obiecte îndepărtate în scenă și entități părinte una de cealaltă făcând clic și glisând.

Vedeți diagrama de mai jos pentru locațiile tuturor acestor lucruri:

Programarea unui joc cu unitatea: Ghidul începătorului programul de unitate joc 0

4.1 Entități de unitate

4.1.1 Ochiuri

Ochiurile sunt așa Geometrie 3D este reprezentat în Unitate. Puteți utiliza unitatea încorporată Unity primitiv obiecte (cuburi, sfere, cilindri etc.) sau importați propriile modele 3D dintr-un pachet de modelare cum ar fi Blender Noțiuni introductive despre Blender: 7 tutoriale fantastice pentru începătoriModelarea 3D este o modalitate excelentă de a exercita creativitatea păstrând legătura cu partea dvs. tehnică. Iată câteva tutoriale gratuite minunate. Citeste mai mult sau Maya Învățare Maya 2016: Unde să începețiMaya este un instrument folosit pentru animația 3D, dar vine cu o curbă de învățare incredibil de abruptă. Ce material didactic bun există? Citeste mai mult . Unity acceptă o varietate de formate 3D, inclusiv .fbx, și .3 ds.

Instrumentele de bază pentru manipularea ochiurilor sunt butoanele de scalare, rotire și traducere din colțul din stânga sus al interfeței. Aceste butoane adaugă pictograme de control la modelele din vizualizarea editorului, care pot fi apoi folosite pentru a le manipula în spațiu. Pentru a modifica textura sau proprietățile fizice ale unui obiect, selectați-le și utilizați butonul inspector vedere pentru a analiza material și corp rigid elemente.

4.1.2 Elemente GUI

Spriturile și textul GUI tradițional pot fi afișate folosind butonul GUI Text si Textura GUI GameObjects în editor. Cu toate acestea, un mod mai robust și mai realist de a gestiona elementele UI este să folosești Text 3D și Quad GameObjects (cu texturi transparente și un shader transparent ilit) pentru a plasa elemente HUD în lumea jocului ca entități.

În ierarhie vizualizare, aceste elemente de joc pot fi trase pe camera principală pentru a le face copii, asigurându-se că se mișcă și se rotește cu aparatul foto.

Elementele GUI (text și texturi) pot fi ajustate la dimensiunea și la scară folosind câmpurile relevante din fila inspector.

4.1.3 Materiale

Materialele sunt combinații de texturi și shader Explicați cinci termeni importanți de jocuri pentru computerDacă jucați un joc pe o consolă, detaliile tehnice sunt gestionate pentru dvs. Unii jucători preferă acest lucru, dar jucătorii de PC se bucură adesea de un grad mai mare de control pe care îl au asupra ochiului unui joc ... Citeste mai mult și poate fi târât direct pe obiecte de joc din fila proiectului. Un număr mare de shadere sunt livrate cu Unity Pro și puteți ajusta textura atașată acestora utilizând fila inspector pentru un obiect la care sunt aplicați.

Pentru a importa o textură, convertiți-o în .jpg, .png, sau .bmpși trageți-l în bunuri folderul din directorul proiectului Unity (care apare în Documentele mele în mod implicit). După câteva secunde, în editor va apărea o bară de încărcare. Când se va termina, veți putea găsi imaginea ca o textură sub proiect tab.

4.1.5 Lumini

Luminile sunt GameObjects care proiectează strălucirea către lume. Dacă nu există lumini în scena dvs., toate poligoanele sunt trase la același nivel de luminozitate, oferind lumii un aspect plat și spălat.

Luminile pot fi poziționate, rotite și au mai multe caracteristici interne pe care le puteți personaliza. intensitate glisorul controlează luminozitatea luminii și gamă controlează cât de repede se estompează.

Liniile directoare din vedere scena vă arată gama maximă de iluminare. Joacă cu ambele setări pentru a obține efectul dorit. Puteți regla, de asemenea, culoarea luminii, modelul (fursec afișată pe suprafață este luminată și ce fel de flacăra apare pe ecran atunci când privești direct lumina. Cookie-ul poate fi folosit pentru a falsifica modele de lumină mai realiste, pentru a crea umbre dramatice false și pentru a simula proiectoare.

Cele trei tipuri principale de lumină sunt loc, punct, și direcțional.

Spoturi au o locație în spațiul 3D și proiectați lumina într-o singură direcție într-un con de unghi variabil. Acestea sunt bune pentru lanterne, faruri de căutare și, în general, vă oferă un control mai precis al iluminatului. Luminile spot pot arunca umbre.

Becuri au o locație în spațiul 3D și aruncați lumina în toate direcțiile. Luminile punctuale nu aruncă umbre.

Lumini direcționaleÎn sfârșit, sunt folosite pentru a simula lumina soarelui: proiectează lumina într-o direcție ca și cum ar fi de la infinit departe. Luminile direcționale afectează fiecare obiect din scenă și pot produce umbre.

4.1.6 Sisteme de particule

A Sistemul de particule este un GameObject care generează și controlează simultan sute sau mii de particule. Particulele sunt obiecte 2D mici, optimizate, afișate în spațiul 3D. Sistemele de particule folosesc redarea simplificată și fizica, dar pot afișa mii de entități în timp real fără bâlbâială, ceea ce le face ideale pentru fum, foc, ploaie, scântei, efecte magice și multe altele.

Există o mulțime de parametri pe care îi puteți regla pentru a obține aceste efecte și le puteți accesa prin a genera un sistem de particule sub editor de componente > selectarea sistemului de particule > deschiderea filei inspectorului. Puteți modifica dimensiunea, viteza, direcția, rotația, culoarea și textura fiecărei particule și puteți seta majoritatea parametrilor să se schimbe, de asemenea, în timp.

Sub coliziune atribut, dacă îl activați și setați spațiul de simulare la lume veți obține particule care se vor ciocni cu obiecte din lume, care pot fi utilizate pentru o serie de efecte de particule realiste, inclusiv ploaia, apa în mișcare și scântei.

5. Exemplu: Elemente de bază ale unui joc

Pentru acest tutorial, vom face un joc simplu pong - ceva ce am mai acoperit de mai multe ori în bricolaj înainte:

  • Arduino Classic Pong Cum să recreezi jocul clasic Pong cu ArduinoPong a fost primul joc video care a ajuns pe piața de masă. Pentru prima dată în istorie, conceptul de „joc video” a fost adus în casa familiei, grație Atari 2600 -... Citeste mai mult
  • Arduino OLED Pong Jocuri retro Arduino cu un ecran OLEDTe-ai întrebat vreodată cât de multă muncă este nevoie pentru a-ți scrie propriile jocuri retro? Cât de ușor este codarea Pong pentru Arduino? Citeste mai mult

În această secțiune, vom trece la aranjarea elementelor de bază - tutorialul de script va veni mai târziu.

În primul rând, să împărțim jocul Pong în componentele sale de bază. În primul rând, avem nevoie de două palete și de o minge. Mingea zboară pe ecran, așa că vom dori un mecanism pentru resetarea acesteia. De asemenea, dorim ca textul să afișeze scorul curent și, pentru a vă arăta toate elementele de bază ale Unity, vom dori un efect de particule fanteziste când atingeți mingea. Întregul joc va trebui să fie dramatic luminat.

Asta se descompune într-un obiect de minge (o sferă), a spawner, două popi de paletă cu emițătoare de particule atașat o Entitate de text 3D, și a lumină la fața locului. Pentru acest tutorial, vom folosi materialul fizic implicit sări, cu combinat de sarituri setat la multiplica. Iată cum arată configurația, în zece capturi de ecran:

Programarea unui joc cu unitatea: jocul de program al unității Ghid pentru începători 4
Programarea unui joc cu unitatea: jocul de program al unității Ghid pentru începători 5

În primul rând, creați o cub prop pentru paleta.

Programarea unui joc cu unitatea: Ghidul începătorului Programul de unitate joc 6

Scalați-l corespunzător, o duplică, și a pus un sferă între palete pentru minge.

Programarea unui joc cu unitatea: Ghidul începătorului Programul de joc joc de unitate 7

Apoi, creați o Obiect 3DText și scară și poziţie corect, schimbând marimea fontului atribut pentru a obține o imagine mai puțin pixelată.

Programarea unui joc cu unitatea: Ghidul începătorului joc de program de unitate 8

Apoi, creează două sisteme de particule, alegeți caracteristicile dorite și atașați-le la padele.

Programarea unui joc cu unitatea: Ghidul începătorului joc de program de unitate 9
Programarea unui joc cu unitatea: Ghidul începătorului jocul programului de unitate 10

În continuare, veți dori poziționați și rotiți camera astfel încât să încadreze scena corect. În timp ce camera este selectată, puteți vedea o mică previzualizare a vizualizării camerei în colțul din dreapta jos.

Programarea unui joc cu unitatea: jocul de program al unității Ghid pentru începători 11

Înainte de a termina, trebuie să creăm două cuburi suplimentare pentru a fi bara de protecție, pentru a împiedica mingea să sară în afara zonei de joc. Putem să le facem invizibile prin a debifa randator de ochiuri în fila inspector.

Programarea unui joc cu unitatea: Ghidul începătorului joc de program de unitate 13
Programarea unui joc cu unitatea: Ghidul începătorului Programul de unitate joc 14

Dacă atingeți jocul, puteți vedea acum elementele de bază ale jocului nostru. Nu vor face încă nimic, dar vom ajunge la asta!

Programarea unui joc cu unitatea: Ghidul începătorului joc de program de unitate 12

Acum că am obținut acea configurație, vom discuta despre ce este implicat în scrierea acestor elemente pentru a face un joc.

6. Scripturi în Unity

După ce aveți un script atașat unui obiect, îl puteți revizui făcând dublu clic pe acesta în butonul inspector. Aceasta se deschide MonoDevelop, mediul de dezvoltare implicit pentru Unity. În esență, Monodevelop este un editor de text cu caracteristici optimizate special pentru programare.

Cuvintele cheie și comentariile sunt evidențiate în albastru și verdeși apar valori numerice și șiruri roșu. Dacă ați obișnuit Eclipsă sau alte IDE, MonoDevelop este foarte similar. Poti construi scripturile din interiorul editorului, pentru a verifica erorile de sintaxă, astfel:

Programarea unui joc cu unitatea: Ghidul începătorului Programul de unitate joc 15

În general, pentru a face script-ul dvs. să interacționeze cu Unity, va trebui să faceți referință la elementele pe care le deține obiectul script (puteți vedea o listă cu aceste elemente sub inspector fila când este selectat obiectul relevant). Puteți apoi să apelați la metode sau să setați variabile pentru fiecare din aceste elemente pentru a efectua modificările dorite.

Dacă doriți ca un script pe un obiect să afecteze proprietățile unui obiect diferit, puteți crea un gol GameObject variabilă în scriptul dvs. și utilizați inspector pentru a-l atribui unui alt obiect din scenă.

O listă a elementelor pe care le-ar putea avea un obiect este următoarea (luată din punctul de vedere al inspectorului uneia dintre padelele noastre din exemplul de mai sus):

  1. Transforma
  2. Cub (Filtru de plasă)
  3. Box Collider
  4. Renderer de plasă

Fiecare dintre aceste aspecte ale obiectului poate fi influențat dintr-un script. În continuare, vom analiza exact cum.

6.1 Transformă

Funcțiile de transformare pentru un GameObject în Unity controlează parametrii fizici ai acelui obiect: its scară, este poziţie, si este orientare. Le puteți accesa dintr-un script ca acesta:

transform.position = newPositionVector3; transform.rotation = newRotationQuaternion; transform.localScale = newScaleVector3;

În exemplele de mai sus, variabilele numite sunt dintre tipurile specificate în nume. Există câteva detalii cheie aici: poziția și scala sunt, după cum așteptați, stocate ca Vector3s. Puteți accesa X, Y, și Z componente ale fiecăruia (de exemplu, transform.position.y vă oferă distanța unui obiect deasupra planului zero).

Cu toate acestea, pentru a evita blocare gimbal, rotirile sunt gestionate ca quaternions (vectori cu patru componente). Deoarece cuaterniunile care manipulează mâna nu sunt intuitive, puteți manipula rotațiile folosind unghiurile euleriene folosind Quaternion. Euler metoda ca atare:

transform.rotation = Quaternion. Euler (pitch, yaw, roll);

Dacă doriți să mutați fără probleme obiectele dintr-un loc în altul, veți găsi Slerp metoda pentru cuaternii și vector3 utile. Slerp cuprinde trei argumente - starea actuală, starea finală și viteza schimbării și interpolează ușor între ele la viteza dată. Sintaxa arată astfel:

transform.position = Vector3.Slerp (startPositionVector3, newDestinationVector3, 1);

6.2 Renderer

Funcțiile de redare în Unity vă permit să controlați modul în care suprafețele de recuzită sunt redate pe ecran. Puteți reasigna textura, puteți schimba culoarea și puteți schimba umbra și vizibilitatea obiectului. Sintaxa arată astfel:

renderer.enabled = fals; renderer.material.color = new Color (0, 255, 0); renderer.material.mainTexture = myTexture; renderer.material.shader = newShader;

Cele mai multe dintre acestea au funcții destul de clare. Primul exemplu face ca obiectul în cauză să fie invizibil: un truc util într-o serie de situații. Al doilea exemplu atribuie o nouă Culoare RGB (și anume, verde) la obiectul în cauză. Al treilea atribuie textura difuză principală unei noi variabile Texture. Ultimul exemplu schimbă umbră materialului obiectului într-o variabilă shader recent definită.

6.3 Fizică

Unitatea vine cu un motor integrat de fizică - ceva care fizică jocuri sandbox Smash, Drive & Build: 3 simulatoare de cutii de nisip grozave Citeste mai mult toate folosesc. Acest lucru vă permite să atribuiți proprietățile fizice ale obiectelor și să lăsați detaliile simulării lor să fie gestionate pentru dvs. În general, în loc să încercați să implementați propria fizică folosind un manual și sistemul de transformare, este mai simplu și mai robust să folosiți motorul de fizică Unity în cea mai mare măsură posibil.

Toate recuzita fizică necesită acceleratoare. Cu toate acestea, simularea propriu-zisă este gestionată de un corp rigid, care poate fi adăugat în inspector vedere. Corpurile rigide pot fi cinematic sau nonkinematic.

Recuzele de fizică cinematică se ciocnesc cu (și efectele) recuzite de fizică neinematică din jurul lor, dar nu sunt afectate de coliziunea în sine. Recuzele cinematice statice sunt obiectele proverbiale imovebile, iar obiectele cinematice în mișcare sunt forță proverbială de neoprit (pentru înregistrare, când se ciocnesc, trec pur și simplu prin fiecare alte).

Dincolo de asta, puteți ajusta glisajul unghiular al obiectului (cantitatea de energie necesară pentru a-l învârti), schimba masa acestuia, dicta dacă este sau nu afectat de gravitație și aplicați forțe asupra acestuia.

Exemple:

rigidbody.angularDrag = 0.1f; rigidbody.mass = 100; rigidbody.isKinematic = fals; rigidbody.useGravity = true; corp rigid. AddForce (transform.forward * 100);

Acestea sunt destul de auto-explicative. Singurul lucru de menționat aici este utilizarea de transform.forward. Vector3 are toate trei componente (.redirecţiona, .sus, și .dreapta) asociate acestora, care poate fi accesat și se rotește cu acestea (redirecţiona este direcția săgeții albastre în editor). transform.forward Cuvântul cheie este pur și simplu vectorul înainte pentru obiectul curent cu magnitudine 1. Poate fi înmulțit cu un float pentru a crea mai multă forță asupra obiectului. Puteți face referință transform.up și transform.rightși le negă pentru a obține inversările.

6.4 Coliziune

Adesea, atunci când construiți un joc, doriți ca o coliziune să rezulte într-o schimbare de stare a codului dvs., dincolo de simpla simulare fizică. Pentru aceasta, veți avea nevoie de metoda de detectare a coliziunilor.

Există o anumită cantitate de pregătire necesară pentru detectarea coliziunilor în Unity. În primul rând, cel puțin unul dintre obiectele din coliziune are nevoie de rigid rigid non-cinematic atașat de ea. Ambele obiecte trebuie să aibă colizoare corecte, setate să fie non-declanșatoare. Viteza totală a ambelor obiecte trebuie să fie suficient de scăzută încât să se ciocnească efectiv, în loc să sară pur și simplu una peste alta.

Dacă aveți tot ce aveți grijă, puteți verifica existența unei coliziuni, plasând o metodă specială de detectare a coliziunii într-un script atașat obiectului cu care doriți să verificați coliziunea. Metoda va arăta astfel:

void OnCollisionEnter (altfel de coliziune) {// faceți lucrurile aici. }

Această metodă se va rula automat în timpul primului cadru pe care un alt obiect îl atinge. Entitatea de coliziune alte este o referire la obiectul pe care l-ați lovit. Puteți, de exemplu, să-i referiți gameobject, corp rigid, și transforma caracteristici pentru a-l manipula în diverse moduri. In timp ce OnCollisionEnter este probabil cea mai frecventă funcție pe care o veți folosi, puteți să o utilizați și OnCollisionExit și OnCollisionStay (cu o sintaxă și o utilizare altfel identice), care se activează în timpul primului cadru în care încetați să ciocniți cu un obiect și în timpul fiecărui cadru în care ciocniți cu un obiect.

Uneori, poate fi util și să faci ceea ce se numește raycasting. În radiotransmisie, o linie infinit de subțire (a rază) este aruncat prin lume de la o anumită origine, de-a lungul unui vector și, atunci când lovește ceva, poziția și alte detalii ale primei coliziuni sunt returnate. Codul pentru o emisie de radiografie arată astfel:

RaycastHit a lovit; dacă (Fizică. Raycast (transform.position, -Vector3.up, hit hit)) {float distanceToGround = hit.distance; }

Aceasta aruncă o rază din poziția obiectului curent de-a lungul -Vector3.up (drept în jos) și leagă variabila lovit la primul obiect cu care se ciocnește. Odată ce raza dvs. a lovit ceva, puteți accesa hit.distance pentru a determina cât de departe este sau lovit. GameObject pentru a manipula obiectul lovit.

Raycast-uri de acest fel pot fi utilizate pentru trageri pentru a determina la ce este îndreptat arma, sau pentru a selecta obiecte când camera le privește sau pentru anumite stiluri de mecanic de mișcare.

6.5 Corecția timpului

Un factor important de care trebuie să țineți cont atunci când manipulați obiectele în acest mod are de-a face framerate. Oricât de atent veți optimiza, framerat-urile vor varia întotdeauna și nu doriți ca viteza jocului dvs. să varieze în consecință. Dacă altcineva rulează jocul dvs. pe un computer mai rapid decât l-ați dezvoltat, nu doriți ca jocul să funcționeze cu viteză dublă.

Modul în care corectați este prin înmulțirea valorilor pe care le utilizați în funcție de timpul necesar pentru redarea ultimului cadru. Acest lucru se realizează prin utilizarea Time.deltaTime. Acest lucru schimbă în mod eficient viteza oricărei variabile din care creșteți fiecare cadru modificare pe cadru la schimbare pe secundăși, probabil, ar trebui să efectuați această modificare la orice valoare pe care o incrementați sau o decretați fiecare cadru.

6.6 Surse audio și ascultători

Acum că am abordat modul de creare, redare și control al obiectelor, să vorbim despre celălalt sens pe care îl pot servi jocurile pe calculator: și anume, sunet. Unity acceptă două tipuri de sunete: 2D și 3D sunete. Sunetele 3D își variază volumul în funcție de distanță și distorsionează în timp ce se deplasează în raport cu camera; Sunetele 2D nu.

Sunetele 2D sunt potrivite pentru voice-over și muzică de fundal, iar sunetele 3D se aplică sunetelor generate de evenimentele din lume. Pentru a schimba dacă sunetul este sau nu 3D, selectați-l în butonul proiect vizualizare, treceți la inspector vizualizați și selectați opțiunea corespunzătoare din meniul derulant, apoi apăsați tasta reimporta buton.

Pentru a reda efectiv sunetul, va trebui să atașați un sursă audio la un element de recuzită (prop-ul de care doriți ca sunetul să provină, în cazul unui sunet 3D). Atunci va trebui să deschideți AudioClip câmp și selectați fișierul dvs. de sunet.

Poți să folosești myAudioSource. Pauză() și myAudioSource. Joaca() pentru a controla acele fișiere de sunet. Puteți ajusta schimbările, volumul și deplasarea doppler a sunetelor sub inspector fila pentru sursa audio.

6.7 Introducere

Un joc care nu ia nicio contribuție de la utilizator nu este mare parte din joc. Există o mulțime de inputuri diferite pe care le puteți citi și aproape toate sunt accesibile prin intermediul Intrare și Cod cheie obiecte. Câteva declarații de intrare de exemplu (care au valorile evaluate la fiecare cadru) sunt mai jos.

Vector3 mousePos = Input.mousePosition; bool isLeftClicking = Intrare. GetMouseButton (0); bool isPressingSpace = Intrare. GetKey (KeyCode). Spaţiu);

Funcțiile acestor linii sunt în mare măsură explicative. Folosind aceste trei tipuri de referințe de intrare, puteți reconstrui schemele de control ale celor mai moderne jocuri de calculator 3D.

6.8 Debugarea unui script

Să zicem că un script nu funcționează. După cum spune medicul bun, vi se pot întâmpla bangups-uri și crenguțe. Dacă există erori de sintaxă directe cu C #, jocul va refuza, în general, să ruleze atunci când atingeți jocul, iar unele mesaje de eroare destul de utile sunt furnizate dacă construi scripturile din interiorul editorului. Vezi mai jos:

Programarea unui joc cu unitatea: Ghidul începătorului joc de program de unitate 16

Aceste erori nu sunt de obicei cele mai dificile de remediat. Ceea ce poate fi mai problematic sunt erorile semantice subtile, în care ați scris cu succes un fișier plin cu C # valid - doar nu unul care face ceea ce credeți că ar fi. Dacă aveți una dintre aceste erori și aveți probleme la urmărirea acesteia, puteți încerca să îmbunătățiți situația.

Primul este să întrerupeți execuția jocului și să verificați consola. Puteți întrerupe jocul făcând clic pe butonul pauză pictograma în porțiunea din mijlocul superior al editorului, apoi selectați consolă din partea de jos a fereastră meniu (sau apăsând Ctrl > Schimb > C). Chiar dacă nu există erori, avertismentele pot totuși ajuta la oferirea unor indicii cu privire la ceea ce ar putea merge prost.

Dacă acest lucru nu funcționează, puteți încerca, de asemenea, să vă faceți o idee despre starea scriptului dvs. imprimând starea variabilelor interne pentru a valida că programul face ceea ce credeți că face. Poți să folosești Debug. Jurnal (șir) pentru a tipări conținutul unui șir în consolă atunci când execuția programului atinge acea linie. În general, dacă lucrați înapoi din ceea ce credeți că ar trebui să se întâmple prin lucrurile care ar trebui să fie făcându-l să se întâmple, în cele din urmă veți ajunge la un punct în care imprimarea dvs. de depanare nu va face ceea ce vă așteptați do. Acolo se află eroarea ta.

7. Exemplu: Scripting Pong

Pentru a construi Pong, dezmembrăm jocul în elementele sale de bază: avem nevoie de o minge care se ronșește înainte și înapoi între palete pentru a crește viteză, avem nevoie de un tabel care să știe când bilele au trecut pe palete și avem nevoie de un mecanism pentru repornirea mingii atunci când se întâmplă. Un prim pas bun ar fi adăugarea unui corp rigid non-cinematic la minge, două corpuri rigide cinematice la padele, dezactivați gravitația pentru toate și alocați un material fizic adecvat din activele standard (sări cu combinat de sarituri setat la multiplica).

Mai jos, puteți vedea scenariul pentru bilă cu comentarii explicative. Mingea trebuie să îndeplinească câteva obiective de bază: ar trebui să sară într-un model complicat, menținând mereu mișcarea pe ambele axe și ar trebui să accelereze într-un ritm provocator, dar nu imposibil în orizontală direcţie.

BallHandler.cs

În continuare, trebuie să scriem paleta noastră, pe care o puteți vizualiza mai jos. Paleta trebuie să se deplaseze în sus și în jos, ca răspuns la apăsările tastei (dar nu în afara anumitor limite). De asemenea, trebuie să declanșeze sistemul de particule atunci când se ciocnește cu ceva.

PaddleHandler.cs

În continuare, avem nevoie de AI-ul inamic: ceva care va determina căderea inamicului să urmărească mingea spre un ritm fix. Pentru aceasta, vom folosi Vector3.Slerp pentru o simplitate maximă. De asemenea, ne-ar plăcea același comportament de particule pe care îl vedem pe propria noastră paletă.

EnemyAI.cs

În cele din urmă, avem nevoie de un script care să actualizeze tabela de marcaj și să reseteze mingea când iese din limite.

ScoreboardUpdater.cs

Cu acele scripturi atașate și referințele completate, atunci când rulăm jocul nostru de Pong, experimentăm jocul!

Programarea unui joc cu unitatea: Ghidul începătorului joc de program de unitate 18

Poti descărcați-mi demo-ul Pong, dacă doriți să vedeți tot ce am subliniat în acțiune. Se rulează pe sistemele Windows, Mac și Linux.

8. Explorarea documentației / Aflați mai multe

Unity este un motor complex cu mai multe caracteristici decât ar putea fi acoperit în mod fezabil într-un ghid de acest stil, și asta înainte de a include extinderea largă a extensiilor (gratuite și comerciale) Unity disponibile pe Internet. Acest ghid vă va oferi un punct de plecare puternic pentru dezvoltarea unui joc, dar autoeducarea este o abilitate importantă în orice efort, și, fără îndoială, aici.

O resursă crucială este aici Unity ScriptReference. ScriptReference este o bază de date căutabilă, disponibilă atât pentru C # cât și pentru Javascript, care are o listă a fiecărei comenzi și funcții Unity, cu descrieri ale funcțiilor lor și scurte exemple de sintaxă.

Dacă aveți probleme cu editorul și interfața Unity sau, cum ar fi, ca și preferințe, tutorialele video, există o listă lungă de înaltă calitate Tutoriale video Unity Cele mai bune unități 3D Tutoriale pentru începătoriVrei să dezvolți jocuri cu Unity, dar nu știi de unde să începi? Încercați astăzi unul dintre aceste minunate tutoriale Unity 3D. Citeste mai mult disponibil. Mai extins (dar mai puțin larg) tutoriale text pentru Unity sunt disponibile și de la CatLikeCoding.

În sfârșit, dacă aveți întrebări dincolo de sfera documentației sau a tutoriale, puteți pune întrebări specifice la răspunsuri. Unity3d.com. Nu uitați că răspunsurile sunt furnizate de voluntari, așa că respectați-le timpul și căutați mai întâi în baza de date pentru a vă asigura că nu ați fost deja răspunzată la întrebarea dvs.

9. Construirea jocului / Compilarea la o aplicație autonomă

Când ați construit ceva de care sunteți mândri (sau ați terminat de clonat exemplul nostru ușor neplăcut Pong pentru practică), este timpul să mutați-vă jocul de la editor și transformați-l în ceva pe care îl puteți posta pe internet și forțați-vă prietenii și familia Joaca. Pentru a face acest lucru, va trebui să creați o aplicație autonomă. Vestea bună este că în Unity, acest lucru este foarte, foarte ușor. Cu toate acestea, există câteva sugestii potențiale de care veți dori să fiți atenți.

Pentru început, știți că puteți construi doar un proiect fără erori. În acest scop, asigurați-vă că aveți consola deschisă pe măsură ce construiți: există anumite condiții de eroare pe care jocul le va ignora în editor, dar va tot anula o încercare de construire. Acest lucru arunca doar mesajele de eroare pe consolă, fără rezultate vizibile pe ecran, ceea ce poate fi frustrant dacă uitați să verificați. Cu toate acestea, după ce ai făcut ca jocul tău să nu compună erori, poți selecta Setări Build sub Fişier meniu sau apăsați Ctrl > Schimb
> B. Acest lucru va genera un dialog simplu care vă permite să vă construiți jocul pentru mai multe platforme.

Programarea unui joc cu unitatea: Ghidul începătorului joc de program de unitate 17

Procesul de acolo este autoexplicativ: selectați opțiunile și apăsați construi; jocul vă va solicita un director în care să instalați și va plasa atât directorul executabil cât și datele. Aceste două fișiere pot fi închise împreună și distribuite (asigurați-vă că nu plătiți pentru un joc încorporat în demo-ul Unity, deoarece acest lucru încalcă condițiile de serviciu).

10. Note de închidere

Ca în orice instrument de dezvoltare a jocului, cheia succesului cu Unity este dezvoltarea iterativă. Trebuie să construiți în trepte ușor de gestionat - fiți ambițioși, în orice caz, dar fiți ambițioși în bucăți mici și aranjați aceste bucăți, astfel încât, chiar dacă vă confruntați cu ambiția voastră supremă, veți obține cel puțin un aspect coerent produs.

Obțineți cele mai cruciale elemente în primul rând: aveți o idee în minte pentru dvs. produs minim viabil, cel mai simplu, cel mai cu ochi goi pe care l-ai putea crea și încă simți ca și cum ai fi obținut ceva demn. Accesați acel proiect viabil minim înainte de a trece la ambiții mai mari.

Acest tutorial vă oferă un loc de pornire puternic, dar cel mai bun mod de a învăța Unity este construind un joc. Începeți să construiți un joc, să completați lacune în cunoștințele dvs. pe măsură ce apar și fluxul treptat de cunoaștere va eroda rapid ceea ce nu știți surprinzător de rapid.

Dacă ați citit toate acestea și sunteți cam copleșit de codarea necesară cu Unity, asigurați-vă că verificați cum să învață dezvoltarea jocului cu Unity Learn Unity Learn este cea mai ușoară cale de a dezvolta jocul de masterDoriți să începeți să vă dezvoltați propriile jocuri? Unity Learn este cel mai bun și mai simplu mod de a învăța și stăpâni ceea ce trebuie să știți. Citeste mai mult și citiți și ghidul nostru pe cum să faci jocuri video fără nici o programare Cum să faci jocuri video fără nicio programareVrei să faci un joc video, dar nu poți codifica? Apoi, folosiți un kit de construcție de jocuri video care vă permite să construiți jocuri fără a fi nevoie de codificare! Citeste mai mult .

Unity este un instrument puternic și, cu un pic de explorare, puteți construi proiecte impresionante cu el mai repede decât v-ați putea aștepta. Spuneți-ne ce ați construit în comentariile de mai jos - ne-ar plăcea să vedem!

Un scriitor și jurnalist cu sediul în sud-vestul, Andre este garantat să rămână funcțional până la 50 de grade Celcius și este rezistent la apă până la adâncimea de 12 metri.