Spēles programmēšana ar vienotību: ceļvedis iesācējiem

Spēles programmēšana ar vienotību: ceļvedis iesācējiem
Šī rokasgrāmata ir pieejama lejupielādei kā bezmaksas PDF. Lejupielādējiet šo failu tūlīt . Jūtieties brīvi kopēt un kopīgot to ar draugiem un ģimeni.

Pārsteidzoša interneta ekonomikas iezīme ir indie videospēļu pieaugums. Kādreiz tas bija ekskluzīvs tūkstoš cilvēku domēns, vairāku miljonu dolāru trīskāršu A studijas, un tika izstrādāti vairāki rīku komplekti, kas mūsdienīgus spēļu izstrādes resursus nodod indivīdu rokās vai nelielas ad hoc programmētāju un dizaineru kolekcijas. Mēs iepriekš esam apsprieduši labākās indie spēles, tāpēc noteikti pārbaudiet tās, lai gūtu iedvesmu par to, ko var sasniegt, izmantojot tādus rīkus kā Unity.





Šīs indie spēļu izstrādes komandas ir parādījušas veiklību un toleranci pret risku, kas daudzos gadījumos ļauj viņiem virzīt spēļu jauninājumus ātrāk nekā viņu lielie budžeta kolēģi. Pēdējos gados pirmizrādi piedzīvojuši vairāki šokējoši veiksmīgi indie nosaukumi, tostarp Minecraft , Limbo , un Super gaļas zēns , un pat ja jums nav vajadzīgas prasmes, lai izveidotu šādas spēles, varat izveidot spēli, izmantojot Buildbox.





Strauji mainīgajā indie spēļu attīstības vidē, Vienotība ir kļuvis par de facto standartu: tā zemās izmaksas, ērta lietošana un plašs funkciju klāsts padara to ideāli piemērotu ātrai spēļu izstrādei. Vienotība ir tik elastīga, ka jūs pat varat izveidojiet savus pielāgotos spēļu kontrolierus ar mazliet DIY zināt, kā!





Pat lielas studijas, piemēram, CCP (Developers of Ieva tiešsaistē ) izmantot to, lai ātri prototipētu spēļu koncepcijas. Unity nodrošina “spēļu dzinēju kastē” - fizikas un renderēšanas dzinēju ar āķiem vairākām skriptu valodām, kas pielāgojams praktiski jebkuram videospēļu žanram.

Lai gan Unity nodrošina vizuālu redaktoru, lai manipulētu ar spēles vidi, Unity nav “nulles programmēšanas” spēļu veidotājs. Tas prasa programmēšanu, lai iegūtu rezultātus, bet arī sniedz jums daudz elastīgāku un jaudīgāku rīku nekā jebkura spēļu veidotāja programma.



Vienotība nepadarīs darbu jūsu vietā, bet ievērojami pazemina iekļūšanas barjeru. Sākot no nulles, izmantojot C ++ un OpenGL, var paiet vairākas dienas, lai nonāktu līdz vietai, kur ekrānā patiešām kaut kas tiek atveidots. Izmantojot Unity, tas aizņem apmēram desmit sekundes. Unity ātri, intuitīvi nodod spēļu radīšanas pamatelementus iesācēju programmētāju rokās.

Šodien es jums vadīšu visu, kas jums jāzina, lai izveidotu spēli Vienotībā, kas ir sadalīta desmit galvenajās nodaļās:





1.§ - Vienotības versijas

2.§ - Vienotības instalēšana





3.§-Īss ievads uz objektorientētu paradigmu

4.§ - Vienotības pamati

5.§ - Piemērs: spēles pamatelementi

6.§ - Skripti Vienotībā

7.§ - Piemērs: Skriptu teniss

8.§ - Dokumentācijas izpēte / Uzziniet vairāk

§9 - Spēles veidošana / apkopošana atsevišķai lietojumprogrammai

10.§-Noslēguma piezīmes

1. Vienotības versijas

Unity ir divas pamata garšas: pro versija un bezmaksas versija. Ir a atšķirību skaits , bet, vispārīgi runājot, profesionālā versija atbalsta vairākus vizuālus uzlabojumus (piemēram, reāllaika mīkstās ēnas un pēcapstrādi) un lielu skaitu salīdzinoši nelielu funkciju, kas ir ārkārtīgi noderīgas sarežģītākām spēlēm.

Tomēr lielākajai daļai salīdzinoši vienkāršu spēļu, kuras jūs varētu vēlēties izveidot, Unity bezmaksas versija ir pilnīgi piemērota. Turpmāk sīkāk sadalīsim galvenās atšķirības interesentiem.

1.1 Cenu noteikšana

Unity bezmaksas versija, protams, ir bezmaksas. Tomēr ir daži ierobežojumi: Unity bezmaksas versiju nevar licencēt nevienam uzņēmumam, kura gada ienākumi pārsniedz 100 000 ASV dolāru . Lai gan šādas organizācijas neietilpst šīs rokasgrāmatas darbības jomā, ja jums ir aizdomas, ka jūs varētu kļūt par šādu organizāciju, iespējams, ir prātīgi izvēlēties Pro versiju.

Unity Pro versija ir 75 ASV dolāri mēnesi, vai 1500 USD pastāvīgai licencei, un tam nav ierobežojumu attiecībā uz to, ko varat darīt ar ar to izveidotajām spēlēm. Ir pieejama arī 30 dienu bezmaksas izmēģinājuma versija, kuru mēs izmantosim šajā rokasgrāmatā, lai sniegtu jums pēc iespējas pilnīgu pārskatu par pieejamajām funkcijām. Viena gada studenta licence ir pieejama arī, izmantojot Pētījums priekš 129 ASV dolāri .

1.2 Funkcijas

Unity bezmaksas versijā nav daudz funkciju. Tomēr vissvarīgākās atšķirības ir šādas: Unity bezmaksas versijai trūkst virknes atveidošanas iespēju, kas ļauj labāk izskatīties un ātrāk darboties (LOD atbalsts, ekrāna atstarpes pēcapstrāde, uzlaboti ēnotāji, reāllaika mīkstie ēnas un atliktā renderēšana). Tam arī trūkst pilnības mehāniskā animācijas sistēma un daži AI rīki.

Kopumā sarežģītiem, liela mēroga projektiem vai projektiem, kuriem ir svarīga grafiskā veiktspēja, ir vērts izmantot profesionālo versiju. Es izmantoju profesionālo versiju, jo es izstrādāju virtuālās realitātes spēles Oculus Rift, un ekrāna un telpas pēcapstrādes atbalsts ir nepieciešams, lai pareizi mijiedarbotos ar austiņām.

2. Unity instalēšana

Unity instalēšana ir vienkārša. Jūs varat lejupielādēt izpildāmo failu no unity3d.com/get-unity/download .

Pēc lejupielādes palaidiet to un pēc tam izpildiet instalētāja norādījumus. Kad instalēšana ir pabeigta, parādīsies logs ar nosaukumu “aktivizēt Unity licenci”. Atzīmējiet izvēles rūtiņu “aktivizēt Unity Pro bezmaksas 30 dienu izmēģinājumu” un pēc tam “Labi”.

Apsveicam! Tagad jums ir 30 dienu Unity Pro izmēģinājuma versija. Ja izmēģinājuma periods beidzas, ja nevēlaties iegādāties profesionālo versiju, varat pārslēgties uz bezmaksas versiju un paturēt esošo saturu.

labākā vieta grafisko teesu iegādei

3. Īss ievads uz objektorientēto paradigmu

Pirms sākat darbu ar Unity, ir svarīgi, lai mēs nedaudz pārrunātu pamatus. Vienotība atbalsta abus C # un JavaScript priekš spēļu programmēšana ; šajā apmācībā mēs strādāsim ar C#.

Pirmkārt, ja jūs nekad iepriekš neesat programmējis, nolieciet šo pamācību malā un pavadiet dažas dienas, strādājot ar Microsoft C # Valodas gruntējums līdz jūtaties ērti, izmantojot valodu vienkāršiem uzdevumiem.

Ja vēlaties kaut ko nedaudz atšķirīgu no C# (bet ne vienmēr valodu, kuru varat izmantot programmā Unity), ieskatieties mūsu ceļvedī par sešām vienkāršākajām programmēšanas valodām iesācējiem.

Ja iepriekš esat programmējis obligātā vai uz objektu orientētā valodā, piemēram, C vai Java, izlaidiet primeru un iepazīstieties ar to, kā C# atšķiras no citām valodām, kuras esat izmantojis agrāk. Jebkurā gadījumā neturpiniet apmācību, līdz jūtaties ērti, atrisinot vienkāršas problēmas ar C# (piemēram, ja es lūgtu jūs uzrakstīt programmu, kas izdrukā pirmos simts pirmskaitļus, jums vajadzētu būt iespējai rakstīt šo programmu bez konsultējoties ar Google).

Vissvarīgākais jēdziens, kas šeit jāsaprot, ir uz objektu orientēta paradigma (saīsināti kā ATVĒRTS ). Objektorientētās valodās programmas ir sadalītas funkcionālās vienībās, ko sauc Objekti . Katram objektam ir savi privāti mainīgie un funkcijas. Tiek sauktas objektam specifiskas funkcijas metodes .

Ideja šeit ir modularitāte: nošķirot katru objektu un piespiežot citus objektus ar to mijiedarboties, izmantojot savas metodes, jūs varat samazināt iespējamo nejaušo mijiedarbību skaitu - un līdz ar to arī kļūdas. Varat arī izveidot objektus, kurus vēlāk bez izmaiņām var izmantot atkārtoti. Vienotībā jūs veidosit šos objektus un pievienosit tiem spēļu entītijas (kuru uzvedību viņi noteiks).

Objekti tiek eksponēti no klases : klase ir tikai fails, kas nosaka jūsu objekta definīciju. Tātad, ja vēlaties a mook objekts, kas apstrādā AI ienaidniekam jūsu spēlē, jūs uzrakstītu “Mook” klasi un pēc tam pievienotu šo failu katrai ienaidnieka vienībai. Kad jūs vadāt savu spēli, katrs ienaidnieks tiks aprīkots ar 'Mook' objekta kopiju.

Jauna skripta pievienošana objektam izskatās šādi:

Pirmkārt, izvēlieties objektu un dodieties uz Inspektors . Noklikšķiniet uz Pievienot komponentu pogu.

Iet uz jauns skripts , ievadiet vajadzīgo vārdu un noklikšķiniet uz izveidot un pievienot .

Tagad jums ir jauns skripts, kuru varat rediģēt, veicot dubultklikšķi uz tā!

Klases fails izskatās apmēram šādi:

using UnityEngine;
public class Mook : MonoBehaviour {
private float health;
void Start () {
health = 100;
}
void Update(){
if (health > 0) {
/* Search for player
if you encounter the player on the road, kill him
if you get shot, remove a random amount of health */
}
}
}

Sadalīsim šo:

  • Izmantojot UnityEngine: Šī līnija norāda C#, ka mēs vēlamies izmantot Unity bibliotēkas, kas ļauj mums izveidot savienojumu ar Unity spēļu dzinēju.
  • Publiskā klase Mook: Mono Uzvedība: Šī rinda deklarē klasi un tās nosaukumu - mook .
  • Privāta pludiņa veselība: Tas deklarē privātas klases mainīgo (kuru var mainīt tikai no klases iekšpuses). Mainīgajam tiek dota vērtība Sākt .
  • Nederīgs sākums (): Tas deklarē metodi, ko sauc Sākt . Sākt ir īpaša metode, kas darbojas tikai vienu reizi, kad spēle sākotnēji tiek palaista.
  • Anulēt atjauninājumu (): Atjaunināšana ir vēl viena īpaša metode, kas darbojas katrā kadrā. Šeit tiks izmantota lielākā daļa jūsu spēles loģikas.
  • // ja uz ceļa sastopat spēlētāju, nogaliniet viņu: Šī rinda ir komentārs (C#ignorē jebkuru rindu, kas sākas ar dubultu slīpsvītru). Komentāri tiek izmantoti, lai atgādinātu sev par konkrētiem koda bitiem. Šajā gadījumā šis komentārs tiek izmantots, lai aizstātu sarežģītāku koda bloku, kas faktiski dara to, kas aprakstīts komentārā.

Kopā ar Sākt un Atjaunināt , jūs varat parādīt savas metodes ar gandrīz jebkuru nosaukumu. Tomēr jūsu izveidotās metodes nedarbosies, ja vien tās netiks izsauktas. Pasludināsim metodi hipotētiskai klasei ar nosaukumu addTwoNumbers kas saskaita kopā divus ciparus:

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

Tas deklarē publisku (citiem objektiem pieejamu) metodi, kas atgriež pludiņu, ko sauc addTwoNumbers , kas ievada divus pludiņus (sauc uz un b ). Pēc tam tā izvada abu vērtību summu.

Izsaucot šo metodi no vienas klases (teiksim, no iekšpuses) Atjaunināt ) izskatās šādi:

float result = addTwoNumbers(1, 2);

Metodes izsaukšana no citas klases ir līdzīga:

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

Atkal, tas tikai izveido mūsu klases eksemplāru, piekļūst atbilstošajai metodei un piegādā tai skaitļus, kurus mēs vēlamies pievienot, un pēc tam saglabā rezultātu rezultāts . Vienkārši.

Ja jūsu skripts ir pievienots objektam ar īpašām īpašībām (piemēram, daļiņu emitētājs), kuram nevar piekļūt, izmantojot parasto GameObject parametru kopu, varat to uzskatīt par cita veida spēles entītiju, izmantojot GetComponent metodi.

Sintakse tam izskatās šādi:

GetComponent().Play();

Ja kaut kas no jums nav svešs, atgriezieties un iziet C# primer. Turpinot jūs, tas ietaupīs daudz vilšanās.

4. Vienotības pamati

Šajā sadaļā mēs strādāsim pie Unity dzinēja pamata mehānikas. Unity darbplūsma notiek apmēram šādi:

  1. Izveidojiet entītiju, lai spēlētu kādu lomu spēlē (tukša GameObjects var izmantot abstraktiem loģiskiem uzdevumiem).
  2. Uzrakstiet vai atrodiet klases failu un pievienojiet to entītijai kā skriptu (izmantojot Pievienot komponentu pogu inspektors skats.
  3. Palaist > pārbaude > atkļūdošana > atkārtot līdz tas darbojas un pāriet uz nākamo spēles elementu.

Unity ir pieejamas vairākas pamata skata cilnes, kuras var izkārtot dažādos veidos pēc lietotāja gaumes. Lielie pieci ir:

  1. Spēle: tiek parādīts spēles eksemplārs, ar kuru varat mijiedarboties un pārbaudīt.
  2. Sižets: nodrošina statisku, rediģējamu versiju spēļu pasaule .
  3. Inspektors: ļauj modificēt atsevišķas vienības spēļu pasaulē, atlasot tās sadaļā redaktors cilni.
  4. Projekts: ļauj pārlūkot projekta failus un ievilkt modeļus, materiālus un citus resursus redaktors cilni, lai tos ievietotu spēļu pasaulē.
  5. Hierarhija: šī cilne parāda visus pasaules objektus, ļaujot atrast ainas attālos objektus un vecāku entītijas, noklikšķinot un velkot.

Visu šo lietu atrašanās vietas skatiet tālāk redzamajā diagrammā:

4.1. Vienības struktūras

4.1.1 Acs

Tīkli ir ceļš 3D ģeometrija ir pārstāvēta Vienotībā. Jūs varat izmantot Unity iebūvēto primitīvs objektus (kubus, sfēras, cilindrus utt.) vai importēt savus 3D modeļus no modelēšanas paketes, piemēram, Blenderis vai Maija . Unity atbalsta dažādus 3D formātus, tostarp .fbx , un .3ds .

Pamata rīki, lai manipulētu ar acīm, ir mērogošanas, pagriešanas un tulkošanas pogas interfeisa augšējā kreisajā stūrī. Šīs pogas modeļiem redaktora skatā pievieno vadības ikonas, kuras pēc tam var izmantot, lai ar tām manipulētu telpā. Lai mainītu objekta faktūras vai fizikas īpašības, atlasiet tās un izmantojiet inspektors skats, lai analizētu materiāls un stingrs ķermenis elementi.

4.1.2 GUI elementi

Tradicionālos GUI rakstus un tekstu var parādīt, izmantojot GUI teksts un GUI tekstūra GameObjects redaktorā. Tomēr spēcīgāks un reālistiskāks veids, kā apstrādāt lietotāja saskarnes elementus, ir izmantot 3D teksts un Quad GameObjects (ar caurspīdīgām faktūrām un neizgaismotu caurspīdīgu ēnotāju), lai ievietotu HUD elementus spēļu pasaulē kā vienības.

Iekš hierarhija skatu, šos spēles elementus var vilkt uz galveno kameru, lai viņi kļūtu par bērniem, nodrošinot, ka tie pārvietojas un griežas kopā ar kameru.

GUI elementu (teksta un faktūru) izmēru un mērogu var pielāgot, izmantojot attiecīgos inspektora cilnes laukus.

4.1.3. Materiāli

Materiāli ir faktūru un ēnotāju kombinācijas, un tos no cilnes Projekts var vilkt tieši uz spēles objektiem. Liels skaits ēnotāju tiek piegādāti kopā ar Unity Pro, un jūs varat pielāgot tiem pievienoto faktūru, izmantojot cilni inspektors objektam, kuram tie tiek lietoti.

Lai importētu tekstūru, pārveidojiet to par .jpg , .png , vai .bmp un velciet to uz aktīvus mape projekta Unity direktorijā (kas parādās Mani dokumenti pēc noklusējuma). Pēc dažām sekundēm redaktorā parādīsies ielādes josla. Kad tas būs pabeigts, jūs varēsit atrast attēlu kā tekstūru zem projekts cilni.

4.1.5 Gaismas

Gaismas ir GameObjects kas izstaro pasauli. Ja jūsu ainā nav gaismas, visi daudzstūri tiek zīmēti tādā pašā spilgtuma līmenī, radot pasaulei plakanu, izskalotu izskatu.

Gaismas var novietot, pagriezt un tām ir vairākas iekšējas īpašības, kuras varat pielāgot. The intensitāte slīdnis kontrolē gaismas spilgtumu un diapazons kontrolē, cik ātri tas izzūd.

Vadlīnijas sadaļā ainas skats parādīt maksimālo apgaismojuma diapazonu. Spēlējiet ar abiem iestatījumiem, lai sasniegtu vēlamo efektu. Varat arī pielāgot gaismas krāsu, modeli ( cepums uz virsmas tiek rādīta gaisma un uz kāda veida uzliesmojums parādās ekrānā, skatoties tieši uz gaismu. Sīkfailu var izmantot, lai viltotu reālistiskākus gaismas modeļus, radītu dramatiskas viltus ēnas un modelētu projektorus.

Trīs galvenie gaismas veidi ir vietas , punkts , un virziena .

Punktu gaismas ir atrašanās vieta 3D telpā un projicējiet gaismu tikai vienā virzienā mainīga leņķa konusā. Tie ir piemēroti lukturiem, prožektoriem un parasti sniedz precīzāku apgaismojuma kontroli. Punktu gaismas var radīt ēnas.

Punktu gaismas ir vieta 3D telpā un vienmērīgi izstaro gaismu visos virzienos. Punktu gaismas nemet ēnas.

Virziena gaismas visbeidzot, tiek izmantoti, lai imitētu saules gaismu: tie projicē gaismu tādā virzienā, it kā no bezgala tāla attāluma. Virziena gaismas ietekmē katru ainas ainu un var radīt ēnas.

4.1.6. Daļiņu sistēmas

TO Daļiņu sistēma ir GameObject kas vienlaikus ģenerē un kontrolē simtiem vai tūkstošiem daļiņu. Daļiņas ir mazi, optimizēti 2D objekti, kas tiek parādīti 3D telpā. Daļiņu sistēmās tiek izmantota vienkāršota atveidošana un fizika, taču tās var reāllaikā parādīt tūkstošiem entītiju bez stostīšanās, padarot tās ideāli piemērotas dūmiem, ugunij, lietum, dzirkstelēm, burvju efektiem u.c.

Ir daudz parametru, kurus varat pielāgot, lai sasniegtu šos efektus, un tiem varat piekļūt, izveidojot daļiņu sistēmu zem komponentu redaktors > izvēloties daļiņu sistēmu > atverot inspektora cilni . Jūs varat mainīt katras daļiņas izmēru, ātrumu, virzienu, rotāciju, krāsu un faktūru, kā arī iestatīt, lai lielākā daļa šo parametru laika gaitā mainītos.

Saskaņā sadursme atribūtu, ja to iespējojat un simulācijas telpu iestatāt uz pasaule jūs iegūsit daļiņas, kas sadursies ar pasaules objektiem, kuras var izmantot vairākiem reālistiskiem daļiņu efektiem, tostarp lietum, kustīgam ūdenim un dzirkstelēm.

5. Piemērs: spēles pamatelementi

Šajā apmācībā mēs izveidosim vienkāršu spēli Teniss - kaut kas, ko mēs jau vairākas reizes esam apskatījuši DIY:

  • Arduino klasiskais teniss
  • Arduino OLED teniss

Šajā sadaļā mēs apskatīsim pamatelementu sakārtošanu - skriptu apmācība būs vēlāk.

Vispirms sadalīsim Pong spēli tās pamata sastāvdaļās. Pirmkārt, mums vajag divus lāpstiņus un bumbu. Bumba lido ārpus ekrāna, tāpēc mēs vēlēsimies mehānismu, kā to atiestatīt. Mēs arī vēlamies, lai tekstā tiktu parādīts pašreizējais rezultāts, un, lai parādītu jums visus Unity pamatelementus, mēs vēlamies izsmalcinātu daļiņu efektu, kad trāpīsit pa bumbu. Visa spēle būs dramatiski jāapgaismo.

Tas sadalās a bumbas objekts (sfēra), a nārsts , divi lāpstiņu rekvizīti ar daļiņu izstarotāji pievienots, a 3D teksta entītija un a vietas gaisma . Šajā apmācībā mēs izmantosim noklusējuma fizisko materiālu lielība , ar atlēcienu kombains iestatīts uz vairoties . Lūk, kā izskatās iestatīšana desmit ekrānuzņēmumos:

Vispirms izveidojiet a kuba rekvizīts lāpstiņai.

Pielāgojiet to, dublēt to , un ielieciet a sfēra starp lāpstiņām bumbiņai.

Pēc tam izveidojiet a 3DText objekts un mērogā un pozīciju pareizi, mainot fonta izmērs atribūtu, lai iegūtu mazāk pikseļu attēlu.

Tālāk izveidojiet divus daļiņu sistēmas , izvēlieties vajadzīgās īpašības un pievienojiet tās lāpstiņām.

Tālāk jūs vēlaties novietojiet un pagrieziet kameru lai tas pareizi ierāmētu ainu. Kamēr kamera ir atlasīta, apakšējā labajā stūrī varat redzēt nelielu kameras skata priekšskatījumu.

Pirms mēs pabeidzam, mums ir jāizveido divi papildu kubi, kas būtu buferi, lai novērstu bumbiņas atsitienu no spēles laukuma. Mēs varam padarīt tos neredzamus, noņemot atzīmi no acu renderētājs iekš cilne inspektors .

Ja jūs uzspēlējat spēlēt, tagad varat redzēt mūsu spēles pamatelementus. Viņi vēl neko nedarīs, bet mēs pie tā tiksimies!

Tagad, kad esam izveidojuši šo iestatījumu, mēs runāsim par to, kas ir saistīts ar šo elementu skriptu veidošanu, lai izveidotu spēli.

6. Skripti Vienotībā

Kad objektam ir pievienots skripts, varat to pārskatīt, veicot dubultklikšķi uz tā inspektors . Tas atveras MonoDevelop , Unity noklusējuma izstrādes vide. Būtībā Monodevelop ir teksta redaktors ar funkcijām, kas īpaši optimizētas programmēšanai.

Atslēgvārdi un komentāri ir iezīmēti zils un zaļš , un parādās skaitliskās vērtības un virknes tīkls . Ja esat lietojis Aptumsums vai citiem IDE, MonoDevelop ir ļoti līdzīgs. Jūs varat būvēt skriptus no redaktora, lai pārbaudītu sintakses kļūdas, piemēram:

Parasti, lai jūsu skripts varētu mijiedarboties ar Unity, jums ir jāatsaucas uz elementiem, kas piemīt objektam, kurā atrodas skripts (šo elementu sarakstu varat skatīt sadaļā inspektors cilni, kad ir atlasīts attiecīgais objekts). Pēc tam varat izsaukt metodes vai iestatīt mainīgos katram no šiem elementiem, lai ieviestu vēlamās izmaiņas.

Ja vēlaties, lai objekta skripts ietekmētu cita objekta īpašības, varat izveidot tukšu GameObject mainīgo skriptā un izmantojiet inspektors lai to piešķirtu citam ainas objektam.

Objekta iespējamo elementu saraksts ir šāds (ņemts no inspektora skata uz vienu no mūsu lāpstiņām iepriekš minētajā piemērā):

  1. Pārveidot
  2. Kubs (acu filtrs)
  3. Kastes sadursme
  4. Sietu renderētājs

Katru no šiem objekta aspektiem var ietekmēt skripts. Tālāk mēs apskatīsim, kā tieši.

6.1 Pārveidot

Unity GameObject pārveidošanas funkcijas kontrolē šī objekta fiziskos parametrus: tā mērogā , tā pozīciju , un tas ir orientācija . Jūs varat tiem piekļūt, izmantojot šādu skriptu:

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

Iepriekš minētajos piemēros nosauktie mainīgie ir nosaukumos norādīto veidu. Šeit ir dažas galvenās detaļas: pozīcija un skala, kā jūs gaidījāt, tiek saglabāta kā Vector3s . Jūs varat piekļūt X , UN , un AR katra sastāvdaļa (piemēram, pārveidot.pozīciju.y norāda objekta attālumu virs nulles plaknes).

Tomēr, lai izvairītos kardāna bloķēšana , rotācijas tiek apstrādātas kā Kvarteri (četru komponentu vektori). Tā kā kvaternionu manipulēšana ar rokām nav intuitīva, jūs varat manipulēt ar rotācijām, izmantojot Eulera leņķus, izmantojot Kvartērijs. Ēlers metode, piemēram:

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

Ja vēlaties vienmērīgi pārvietot objektus no vienas vietas uz citu, jūs atradīsit Slerps noderīga metode kvaternioniem un vektoriem. Slerps ņem vērā trīs argumentus - pašreizējo stāvokli, galīgo stāvokli un pārmaiņu ātrumu un vienmērīgi interpolē starp tiem noteiktā ātrumā. Sintakse izskatās šādi:

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

6.2 Renderētājs

Unity renderēšanas funkcijas ļauj jums kontrolēt veidu, kā rekvizītu virsmas tiek attēlotas ekrānā. Jūs varat atkārtoti piešķirt tekstūru, mainīt krāsu un mainīt ēnu un objekta redzamību. Sintakse izskatās šādi:

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

Lielākajai daļai no tām ir diezgan skaidras funkcijas. Pirmais piemērs padara attiecīgo objektu neredzamu: noderīgs triks vairākās situācijās. Otrais piemērs piešķir jaunu RGB krāsa (proti, zaļā krāsā) attiecīgajam objektam. Trešais piešķir galveno izkliedēto faktūru jaunam tekstūras mainīgajam. Pēdējais piemērs maina objekta materiāla ēnotāju uz nesen definētu ēnotāja mainīgo.

6.3 Fizika

Unity ir aprīkots ar integrētu fizikas dzinēju - to izmanto visas fizikas smilškastes spēles. Tas ļauj jums piešķirt objektu fiziskās īpašības un ļaut jums apstrādāt detaļas par to simulāciju. Kopumā, nevis mēģināt īstenot savu fiziku, izmantojot mācību grāmatu un pārveidošanas sistēmu, ir vienkāršāk un stabilāk izmantot Unity fizikas dzinēju, cik vien iespējams.

Visi fizikas rekvizīti prasa sadursmes . Tomēr pašu simulāciju apstrādā a stingrs ķermenis , ko var pievienot inspektors skats. Cietie ķermeņi var būt kinemātisks vai nonkinematic .

Kinemātikas fizikas rekvizīti saduras ar apkārtējiem (un iedarbojas) ar nekinemātiskiem fizikas rekvizītiem, bet paši sadursme tos neietekmē. Statiskie kinemātiskie rekvizīti ir proverbiāli nekustamie objekti, un kustīgie kinemātiskie objekti ir proverbial neapturams spēks (zināšanai, kad tie saduras, tie vienkārši iziet viens otram cauri).

Turklāt jūs varat pielāgot objekta leņķisko pretestību (cik daudz enerģijas nepieciešams tā griešanai), mainīt tā masu, diktēt, vai to ietekmē gravitācija, un pielikt tam spēkus.

Piemēri:

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

Tie visi ir diezgan pašsaprotami. Vienīgais, kas šeit jāņem vērā, ir izmantošana pārveidot.uz priekšu . Vector3 visiem ir trīs sastāvdaļas ( .uz priekšu , .uz augšu , un .taisnība ), kam var piekļūt un kas rotē kopā ar viņiem ( uz priekšu ir zilās bultiņas virziens redaktorā). The pārveidot.uz priekšu atslēgvārds ir vienkārši pašreizējā objekta priekšējais vektors ar lielumu 1. To var reizināt ar pludiņu, lai radītu objektam lielāku spēku. Varat arī atsaukties pārveidot.up un pārveidot.pareizi , un noliegt tos, lai panāktu atgriešanos.

6.4 Sadursme

Bieži vien, veidojot spēli, jūs vēlaties, lai sadursmes rezultātā jūsu kodā tiktu mainīti daži stāvokļi, kas nav tikai fizikas simulācija. Šim nolūkam jums būs nepieciešams sadursmes noteikšanas metode .

Lai noteiktu sadursmes Unity, ir nepieciešams zināms sagatavošanās darbs. Pirmkārt, vismaz vienam no sadursmes objektiem ir nepieciešams a ne-kinemātisks stingrs korpuss tam pievienots. Abiem objektiem jābūt pareiziem sadursmēm, kas ir iestatīti kā neaktivizētāji. Abu objektu kopējam ātrumam jābūt pietiekami zemam, lai tie faktiski sadurtos, nevis vienkārši izlaistu viens otru.

Ja esat parūpējies par visu, varat pārbaudīt sadursmi, ievietojot īpašu sadursmes noteikšanas metodi skriptā, kas pievienots objektam, ar kuru vēlaties pārbaudīt sadursmi. Metode izskatīsies šādi:

void OnCollisionEnter(Collision other) {
//do things here
}

Šī metode tiks automātiski palaista pirmā kadra laikā, kad cits objekts pieskaras jūsu objektam. Sadursmes vienība cits ir atsauce uz trāpīto objektu. Varat, piemēram, atsaukties uz to spēles objekts , stingrs ķermenis , un pārveidot īpašības, lai ar to manipulētu dažādos veidos. Kamēr OnCollisionEnter iespējams, ir visizplatītākā funkcija, ko varat izmantot OnCollisionExit un OnCollisionStay (ar citādi identisku sintaksi un lietojumu), kas aktivizējas pirmā kadra laikā, kad pārtraucat sadursmi ar objektu, un katra kadra laikā, kad jūs saskaraties ar objektu.

Dažreiz var būt lietderīgi darīt arī to, ko sauc raikotēšana . Raicastingā bezgalīgi plāna līnija (a staru ) tiek izmesta pa pasauli no kādas izcelsmes, pa kādu vektoru, un, kad tas kaut ko trāpa, tiek atgriezta pirmās sadursmes atrašanās vieta un citas detaļas. Raycast kods izskatās šādi:

RaycastHit hit;
if (Physics.Raycast(transform.position, -Vector3.up, out hit)) {
float distanceToGround = hit.distance;
}

Tas izstaro staru no pašreizējā objekta pozīcijas gar -Vector3.up (taisni uz leju) un saista mainīgo sist līdz pirmajam objektam, ar kuru tas saduras. Kad jūsu stars ir kaut ko trāpījis, varat piekļūt hit.distance lai noteiktu, cik tālu tas ir, vai hit.GameObject manipulēt ar trāpīto objektu.

Šādus starus var izmantot šāvējiem, lai noteiktu, uz ko pistole norādīja, vai atlasītu objektus, kad kamera uz tiem skatās, vai noteiktiem kustību mehāniķu stiliem.

6.5 Laika korekcija

Viens svarīgs faktors, kas jāpatur prātā, manipulējot ar objektiem šādā veidā, ir saistīts ar kadru ātrums . Neatkarīgi no tā, cik rūpīgi jūs optimizējat, kadru nomaiņas ātrums vienmēr būs atšķirīgs, un jūs nevēlaties, lai spēles ātrums attiecīgi mainītos. Ja kāds cits spēlē jūsu spēli ātrākā datorā, nekā jūs to izstrādājāt, jūs nevēlaties, lai spēle darbotos ar dubultu ātrumu.

Jūs to labojat, reizinot izmantotās vērtības ar laiku, kas vajadzīgs pēdējā kadra atveidošanai. Tas tiek darīts, izmantojot Time.deltaTime . Tas efektīvi maina jebkura mainīgā ātrumu, no kura jūs palielinat katru kadru mainīt uz vienu kadru uz mainās sekundē , un jums, iespējams, vajadzētu veikt šīs izmaiņas jebkurā vērtībā, kuru jūs palielināt vai samazināt katrā kadrā.

6.6 Audio avoti un klausītāji

Tagad, kad esam apskatījuši, kā izveidot, atveidot un kontrolēt objektus, parunāsim par otru jēgu, ko datorspēles var kalpot: proti, skaņa . Unity atbalsta divu veidu skaņas: 2D un 3D skaņas. 3D skaņas atšķiras atkarībā no attāluma un izkropļo, pārvietojoties attiecībā pret kameru; 2D skaņas nav.

2D skaņas ir piemērotas balss pārraidīšanai un fona mūzikai, un 3D skaņas attiecas uz skaņām, ko rada notikumi pasaulē. Lai mainītu, vai skaņa ir 3D, atlasiet to sadaļā projekts skatu, pārslēdzieties uz inspektors skatiet un nolaižamajā izvēlnē atlasiet atbilstošo opciju, pēc tam nospiediet reimportēt pogu.

Lai faktiski atskaņotu skaņu, jums jāpievieno audio avots uz balstu (balsts, no kura vēlaties, lai skaņa nāktu, 3D skaņas gadījumā). Tad jums būs jāatver audio klips laukā un atlasiet skaņas failu.

kā izveidot raustīšanās pārklājumu ar Photoshop

Tu vari izmantot myAudioSource.Pause () un myAudioSource.Play () lai kontrolētu šos skaņas failus. Varat pielāgot skaņu kritiena uzvedību, skaļumu un doplera maiņu inspektors cilni audio avotam.

6.7 Ievads

Spēle, kurā lietotājs neiegūst nekādu ieguldījumu, nav liela spēle. Ir daudz dažādu ievades veidu, kurus varat lasīt, un gandrīz visi no tiem ir pieejami, izmantojot Ievadi un Atslēgas kods objekti. Tālāk ir sniegti daži ievades paziņojumu paraugi (kuru vērtības ir novērtētas katrā kadrā).

Vector3 mousePos = Input.mousePosition;
bool isLeftClicking = Input.GetMouseButton(0);
bool isPressingSpace = Input.GetKey(KeyCode.Space);

Šo līniju funkcijas lielākoties ir pašsaprotamas. Izmantojot šos trīs ievades atsauces veidus, varat rekonstruēt vairuma mūsdienu 3D datorspēļu vadības shēmas.

6.8 Skripta atkļūdošana

Pieņemsim, ka skripts nedarbojas. Kā saka labais ārsts, ar jums var notikt sprādzieni un piekārtības. Ja ar jūsu C#ir tiešas sintakses kļūdas, spēle parasti atsakās palaist, kad nospiežat play, un tiek sniegti daži diezgan noderīgi kļūdu ziņojumi, ja būvēt skriptus no redaktora. Skatīt zemāk:

Šīs kļūdas parasti nav visgrūtāk novērst. Kas var būt problemātiskāks, ir smalkas semantiskas kļūdas, kurās esat veiksmīgi uzrakstījis failu, kas pilns ar derīgu C# - tikai ne tādu, kas dara to, ko domājāt. Ja rodas kāda no šīm kļūdām un jums ir grūtības to izsekot, ir dažas lietas, kuras varat mēģināt uzlabot.

Pirmais ir apturēt spēles izpildi un pārbaudīt konsoli. Jūs varat apturēt spēli, noklikšķinot uz pauze ikonu redaktora augšējā vidējā daļā un pēc tam atlasot konsole no apakšas logs izvēlnē (vai nospiežot Ctrl > Shift > C ). Pat ja nav kļūdu, brīdinājumi joprojām var sniegt dažas norādes par to, kas varētu notikt nepareizi.

Ja tas nedarbojas, varat arī mēģināt iegūt priekšstatu par skripta stāvokli, izdrukājot iekšējo mainīgo stāvokli, lai apstiprinātu, ka programma dara to, ko jūs domājat. Tu vari izmantot Atkļūdošanas žurnāls (virkne) lai izdrukātu virknes saturu konsolē, kad programmas izpilde nokļūst šajā rindā. Kopumā, ja jūs strādājat atpakaļ no tā, kas, jūsuprāt, vajadzētu notikt, izmantojot lietas, kurām tam vajadzētu notikt, galu galā jūs sasniegsit punktu, kurā jūsu atkļūdošanas izdrukas nedarīs to, ko jūs gaidāt. Tur ir tava kļūda.

7. Piemērs: Scenārija teniss

Lai izveidotu Pongu, sadalīsim spēli tās galvenajos elementos: mums ir nepieciešama bumba, kas arvien ātrāk rotē šurpu turpu starp lāpstiņām. atsākt bumbu, kad tas notiek. Labs pirmais solis būtu bumbiņai pievienot ne-kinemātisku stingru korpusu, lāpstiņām divas kinemātiskas cietas ķermeņa daļas, atspējot to gravitāciju un no standarta aktīviem piešķirt atbilstošu fizisko materiālu ( lielība ar atlēcienu kombains iestatīts uz vairoties ).

Zemāk varat apskatīt bumbas scenāriju ar paskaidrojošiem komentāriem. Bumbai ir jāsasniedz daži pamatmērķi: tai jāatlec sarežģītā veidā, vienmēr saglabājot kustību pa abām asīm, un tai jāpaātrinās sarežģītā, bet ne neiespējamā tempā horizontālā virzienā.

BallHandler.cs

Tālāk mums ir jāraksta skripts mūsu lāpstiņai, kuru varat apskatīt zemāk. Lāpstiņai jāpārvietojas uz augšu un uz leju, reaģējot uz taustiņu nospiešanu (bet ne ārpus noteiktām robežām). Tam ir arī jāieslēdz daļiņu sistēma, kad tā ar kaut ko saduras.

PaddleHandler.cs

Tālāk mums ir vajadzīgs ienaidnieka AI: kaut kas, kas liks ienaidnieka lāpstiņai noteiktā ātrumā virzīties uz bumbu. Šim nolūkam mēs izmantosim Vector3.Slerp, lai nodrošinātu maksimālu vienkāršību. Mēs vēlētos arī tādu pašu daļiņu uzvedību, kādu mēs redzam uz mūsu lāpstiņas.

EnemyAI.cs

Visbeidzot, mums ir nepieciešams skripts, lai atjauninātu rezultātu tabulu un atiestatītu bumbu, kad tā iziet ārpus robežām.

ScoreboardUpdater.cs

Pievienojot šos skriptus un aizpildot atsauces, mēs, spēlējot Pong spēli, piedzīvojam spēli!

Jūs varat lejupielādēt manu Pong demo , ja vēlaties redzēt visu, ko esmu izklāstījis, darbībā. Tas darbojas Windows, Mac un Linux sistēmās.

8. Dokumentācijas izpēte / Uzziniet vairāk

Unity ir sarežģīts dzinējs, kuram ir daudz vairāk funkciju, nekā tas varētu būt iekļauts šī stila ceļvedī, un tas ir pirms jūs iekļaujat plašo (bezmaksas un komerciālo) Unity paplašinājumu klāstu, kas pieejams internetā. Šī rokasgrāmata sniegs jums spēcīgu sākumpunktu spēles izstrādei, taču pašizglītība ir svarīga prasme visos centienos, turklāt divreiz vairāk.

Būtisks resurss šeit ir Unity ScriptReference . ScriptReference ir meklējama datu bāze, kas pieejama gan C#, gan Javascript, un kurā ir saraksts ar visām Unity komandām un funkcijām, ar to funkciju aprakstiem un īsiem sintakses piemēriem.

Ja jums ir problēmas ar Unity redaktoru un saskarni vai kā video pamācības, tad ir garš augstas kvalitātes saraksts Unity video pamācības pieejams. Plašāks (bet mazāk plašs) teksta pamācības Vienotībai ir pieejami arī vietnē CatLikeCoding.

Visbeidzot, ja jums ir jautājumi, kas neietilpst dokumentācijā vai apmācībās, varat uzdot konkrētus jautājumus vietnē atbildes.Unity3d.com . Atcerieties, ka atbildes sniedz brīvprātīgie, tāpēc cieniet viņu laiku un vispirms meklējiet datu bāzē, lai pārliecinātos, ka uz jūsu jautājumu vēl nav atbildēts.

9. Spēles veidošana / apkopošana atsevišķai lietojumprogrammai

Kad esat uzbūvējis kaut ko tādu, ar ko lepojaties (vai esat pabeidzis klonēt mūsu nedaudz viltīgo Pong piemēru praksei), ir pienācis laiks pārvietot savu spēli no redaktora un pārvērst to par kaut ko tādu, ko varat ievietot internetā un piespiest draugiem un ģimenei spēlēt. Lai to izdarītu, jums ir jāizveido atsevišķa lietojumprogramma. Labā ziņa ir tā, ka Vienotībā tas ir ļoti, ļoti vienkārši. Tomēr ir daži iespējamie žagas, no kuriem vēlaties būt uzmanīgiem.

Iesācējiem, ziniet, ka jūs varat izveidot tikai projektu bez kļūdām. Šim nolūkam pārliecinieties, ka konsoles veidošanas laikā ir atvērta konsole: ir daži kļūdu nosacījumi, kurus spēle redaktorā ignorēs, bet joprojām pārtrauks būvēšanas mēģinājumu. Tas tikai izgāž kļūdas ziņojumus uz konsoli, un ekrānā nav redzamu rezultātu, kas var būt apgrūtinoši, ja aizmirstat pārbaudīt. Tomēr, kad spēle ir apkopota bez kļūdām, varat to izvēlēties Veidot iestatījumus saskaņā Fails izvēlnē vai nospiediet Ctrl > Shift

> B . Tas parādīs vienkāršu dialoglodziņu, kas ļauj veidot spēli vairākām platformām.

Turpmāk process ir pašsaprotams: atlasiet savas iespējas un nospiediet būvēt ; spēle liks jums direktoriju, kurā instalēt, un tur ievietos gan izpildāmo, gan datu direktoriju. Šos divus failus var salikt kopā un izplatīt (tikai pārliecinieties, ka jums nav jāmaksā par spēli, kas izveidota Unity demonstrācijā, jo tas pārkāpj pakalpojumu sniegšanas noteikumus).

10. Noslēguma piezīmes

Tāpat kā ar jebkuru spēļu izstrādes rīku, panākumu atslēga ar Unity ir atkārtota attīstība. Jums ir jāveido pārvaldāms solis - ar visiem līdzekļiem jābūt vērienīgam, bet jābūt vērienīgam mazos gabalos un sakārtojiet šos gabalus tā, lai, pat ja jūs nesasniegtu savas galējās ambīcijas, jūs vismaz sasniegsit saskaņotu produkts.

Vispirms iegūstiet vissvarīgākos elementus: domājiet par savu ideju minimālais dzīvotspējīgais produkts visvienkāršākā, visskaistākā lieta, ko jūs, iespējams, varētu izveidot un joprojām justies tā, it kā būtu sasniedzis kaut ko vērtīgu. Pirms pāriet pie lielākām ambīcijām, sasniedziet šo minimālo dzīvotspējīgo projektu.

Šī apmācība dod jums spēcīgu sākuma vietu, taču labākais veids, kā apgūt Vienotību, ir spēles veidošana. Sāciet veidot spēli, aizpildiet zināšanu trūkumus, kad tās parādās, un pakāpeniska zināšanu plūsma pārsteidzoši ātri iznīcinās lietas, kuras jūs nezināt.

Ja esat izlasījis visu šo un esat mazliet satriekts par kodēšanu, kas nepieciešama, izmantojot Unity, noteikti pārbaudiet, kā apgūt spēļu izstrādi, izmantojot Unity Learn kā arī izlasiet mūsu ceļvedi par to, kā izveidot videospēles bez jebkādas programmēšanas.

Unity ir spēcīgs rīks, un, mazliet izpētot, ar to jūs varat izveidot iespaidīgus projektus ātrāk, nekā jūs varētu gaidīt. Paziņojiet mums, ko jūs izveidojāt tālāk sniegtajos komentāros - mēs labprāt to redzētu!

Kopīgot Kopīgot Čivināt E -pasts 3 veidi, kā pārbaudīt, vai e -pasts ir īsts vai viltots

Ja esat saņēmis e -pastu, kas izskatās mazliet apšaubāms, vienmēr vislabāk ir pārbaudīt tā autentiskumu. Šeit ir trīs veidi, kā noteikt, vai e -pasts ir īsts.

Lasīt Tālāk
Saistītās tēmas
  • Programmēšana
  • Programmēšana
  • Longform
  • Longform ceļvedis
Par autoru Andrē Infante(Publicēti 131 raksti)

Rakstnieks un žurnālists, kurš dzīvo Dienvidrietumos, tiek garantēts, ka Andrē darbosies līdz 50 grādiem pēc Celsija un ir ūdensizturīgs līdz divpadsmit pēdu dziļumam.

Vairāk no Andre Infante

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai iegūtu tehniskus padomus, pārskatus, bezmaksas e -grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu