Pelin ohjelmoiminen Unityllä: Aloittelijan opas

Pelin ohjelmoiminen Unityllä: Aloittelijan opas
Tämä opas on ladattavissa ilmaisena PDF -tiedostona. Lataa tämä tiedosto nyt . Kopioi ja jaa tämä ystävillesi ja perheellesi.

Internet -talouden yllättävä piirre on indie -videopelien nousu. Kun tuhansien miesten yksinoikeus, monen miljoonan dollarin kolmois-A-studiot, on kehitetty useita työkaluja, jotka tuovat nykyaikaisia ​​pelikehitysresursseja yksilöiden käsiin tai pieniä, ad hoc -kokoelmia ohjelmoijia ja suunnittelijoita. Olemme aiemmin keskustelleet parhaista indie -peleistä, joten muista tarkistaa niistä inspiraatiota siitä, mitä Unityn kaltaisilla työkaluilla voidaan saavuttaa.





Nämä indie-pelikehitysryhmät ovat osoittaneet ketteryyttä ja riskinsietokykyä, jonka ansiosta he voivat monissa tapauksissa edistää pelin innovaatioita nopeammin kuin suuret budjettikollegat. Useita järkyttävän menestyneitä indie -teoksia on ensi -iltansa viime vuosina, mm Minecraft , Limbo ja Super lihapoika , ja vaikka sinun ei tarvitsisikaan tehdä tällaisia ​​pelejä, voit tehdä pelin Buildboxin avulla.





Nopeasti kehittyvässä indie -pelikehityksen maisemassa Ykseys on tullut todelliseksi standardiksi: sen alhaiset kustannukset, helppokäyttöisyys ja laaja ominaisuudet tekevät siitä ihanteellisen nopean pelikehityksen kannalta. Unity on niin joustava, että voit jopa tee omat peliohjaimet vähän DIY tietää miten!





Jopa suuret studiot, kuten CCP (Developers of Eve verkossa ) käyttää sitä pelikonseptien nopeaan prototyyppityöhön. Unity tarjoaa 'pelimoottorin laatikossa' - fysiikan ja renderointimoottorin, jossa on koukkuja useille skriptikielille, ja joka on mukautettavissa lähes mihin tahansa videopelityyppiin.

Vaikka Unity tarjoaa visuaalisen editorin peliympäristön manipulointiin, Unity ei ole nollaohjelmointityökalu. Se vaatii ohjelmointia tulosten tuottamiseksi, mutta antaa sinulle myös paljon joustavamman ja tehokkaamman työkalun kuin mikään pelintekijäohjelma voisi.



Unity ei tee työtä puolestasi, mutta se alentaa merkittävästi pääsyn esteitä. C ++: n ja OpenGL: n avulla alusta alkaen täysin tyhjästä voi kestää päiviä päästä pisteeseen, jossa ruudulla näkyy jotain. Unityn käyttäminen kestää noin kymmenen sekuntia. Unity antaa pelin luomisen peruselementit aloittelevien ohjelmoijien käsiin nopeasti ja intuitiivisesti.

Tänään opastan sinut läpi kaiken, mitä sinun tarvitsee tietää pelin tekemiseksi Unityssä, joka on jaettu kymmeneen pääosaan:





§1 - Unityn versiot

§2 - Unityn asentaminen





§3-Lyhyt johdanto olio-suuntautuneeseen paradigmaan

§4 - Yhtenäisyyden perusteet

§5 - Esimerkki: Pelin peruselementit

§6 - Käsikirjoitus Unityssä

§7 - Esimerkki: Scripting Pong

§8 - Dokumentaation tutkiminen / lisätietoja

§9 - Pelin rakentaminen / kääntäminen itsenäiseksi sovellukseksi

§10-Loppusanat

1. Unityn versiot

Unityssä on kaksi perusmakua: pro -versio ja ilmainen versio. Siellä on erojen lukumäärä , mutta yleisesti ottaen pro-versio tukee useita visuaalisia parannuksia (kuten reaaliaikaisia ​​pehmeitä varjoja ja jälkikäsittelyä) ja suurta määrää suhteellisen pieniä ominaisuuksia, jotka ovat erittäin hyödyllisiä monimutkaisemmissa peleissä.

Useimmat suhteellisen yksinkertaiset pelit, jotka haluat ehkä rakentaa, Unityn ilmainen versio on täysin riittävä. Hajautamme alla olevat keskeiset erot yksityiskohtaisemmin kiinnostuneille.

1.1 Hinnoittelu

Unityn ilmainen versio on tietysti ilmainen. On kuitenkin olemassa muutamia rajoituksia: Unityn ilmaisversiota ei voi lisensoida millekään yritykselle, jonka vuotuiset tulot ovat yli 100 000 dollaria . Vaikka tällaiset organisaatiot eivät kuulu tämän oppaan soveltamisalaan, jos epäilet, että sinusta voi tulla tällainen organisaatio, on luultavasti viisasta turvautua Pro -versioon.

Unityn Pro -versio on 75 dollaria kuukausi, tai 1500 dollaria pysyvälle lisenssille, eikä sillä ole rajoituksia sillä, mitä voit tehdä sillä luoduilla peleillä. Saatavilla on myös 30 päivän ilmainen kokeiluversio, jota käytämme tässä oppaassa, jotta voimme antaa sinulle täydellisen yleiskatsauksen käytettävissä olevista ominaisuuksista. Yhden vuoden opiskelijalisenssi on saatavana myös kautta Tutkimus varten 129 dollaria .

1.2 Ominaisuudet

Unityn ilmaisesta versiosta puuttuu monia ominaisuuksia. Tärkeimmät erot ovat kuitenkin seuraavat: Unityn ilmaisesta versiosta puuttuu useita renderöintivaihtoehtoja, jotka mahdollistavat paremman näköiset ja nopeammin toimivat pelit (LOD-tuki, näytön tilan jälkikäsittely, edistyneet varjostimet, reaaliaikainen pehmeä varjot ja lykätty renderointi). Siitä puuttuu myös täysi mechanim -animaatiojärjestelmä ja joitain tekoälytyökaluja.

Yleensä monimutkaisissa, laajamittaisissa projekteissa tai projekteissa, joissa graafinen suorituskyky on tärkeää, pro-versio kannattaa. Käytän pro-versiota, koska kehitän virtuaalitodellisuuspelejä Oculus Riftille, ja näytön tilan jälkikäsittelytuki on välttämätön, jotta kuulokkeet toimivat oikein.

2. Unityn asentaminen

Unity on helppo asentaa. Voit ladata suoritettavan tiedoston osoitteesta unity3d.com/get-unity/download .

Kun olet ladannut sen, suorita se ja noudata sitten asennusohjelman ohjeita. Kun asennus on valmis, näkyviin tulee ikkuna aktivoida Unity -lisenssi. Valitse valintaruutu 'aktivoi 30 päivän ilmainen Unity Pron kokeilu' ja valitse sitten OK.

Onnittelut! Sinulla on nyt 30 päivän Unity Pro -kokeilu. Jos kokeilujakson päätyttyä et halua ostaa pro -versiota, voit vaihtaa ilmaiseen versioon ja säilyttää olemassa olevan sisällön.

miten voit tehdä muotokuvatilan iPhonessa 7

3. Lyhyt johdanto olio-suuntautuneeseen paradigmaan

Ennen kuin aloitat Unityn käytön, on tärkeää, että käymme hieman läpi perusasiat. Unity tukee molempia C # ja JavaScript varten pelin ohjelmointi ; työskentelemme C#: n kanssa tässä opetusohjelmassa.

Ensinnäkin, jos et ole koskaan ohjelmoinut aiemmin, laita tämä opetusohjelma sivuun ja käytä muutama päivä Microsoftin kautta C # Kielialusta kunnes tunnet olosi mukavaksi käyttää kieltä yksinkertaisiin tehtäviin.

Jos haluat jotain hieman erilaista kuin C# (mutta ei välttämättä kieli, jota voit käyttää Unityssä), tutustu oppaaseemme kuuteen helpoimpaan ohjelmointikieleen aloittelijoille.

Jos olet ohjelmoinut aiemmin pakollisella tai olio -kielellä, kuten C tai Java, selaa aluke ja tutustu siihen, miten C# eroaa muista aiemmin käyttämistäsi kielistä. Joka tapauksessa, älä jatka opetusohjelmaa, ennen kuin tunnet olosi mukavaksi ratkaista yksinkertaisia ​​C# -ongelmia (jos esimerkiksi pyytäisin sinua kirjoittamaan ohjelman, joka tulostaa sata ensimmäistä alkulukua, sinun pitäisi pystyä kirjoittamaan ohjelma ilman Googlen konsultointi).

Tärkein käsite tässä on objektiohjattu paradigma (lyhenne AVATA ). Objektiorientoiduilla kielillä ohjelmat on jaettu toiminnallisiin yksiköihin, joita kutsutaan Esineet . Jokaisella objektilla on omat muuttujansa ja funktionsa. Kohdekohtaisia ​​toimintoja kutsutaan menetelmiä .

Ideana on modulaarisuus: kun jokainen objekti eristetään ja pakotetaan muut objektit olemaan vuorovaikutuksessa sen kanssa menetelmiensä avulla, voit vähentää mahdollisten tahattomien vuorovaikutusten määrää - ja laajentamalla virheitä. Voit myös luoda objekteja, joita voit käyttää myöhemmin uudelleen ilman muutoksia. Unityssä rakennat näitä esineitä ja kiinnität ne peliyksiköt (kenen käyttäytymistä he hallitsevat).

Objektit näytetään luokat : luokka on vain tiedosto, joka esittää objektisi määritelmän. Joten jos haluat a mook objekti, joka käsittelee tekoälyä vihollisellesi pelissäsi, kirjoitat Mook -luokan ja liität sen tiedoston jokaiseen viholliskohteeseen. Kun pelaat peliäsi, jokainen vihollinen varustetaan kopiolla Mook -esineestä.

Uuden komentosarjan liittäminen objektiin näyttää tältä:

Ensimmäinen, valitse kohde ja mene Tarkastaja . Klikkaa Lisää komponentti -painiketta.

Mene uusi käsikirjoitus , kirjoita haluamasi nimi ja napsauta luoda ja lisätä .

Nyt sinulla on uusi skripti, jota voit muokata kaksoisnapsauttamalla sitä!

Luokatiedosto näyttää tältä:

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 */
}
}
}

Katkotaan tämä:

  • UnityEnginen käyttäminen: Tämä rivi kertoo C#: lle, että haluamme käyttää Unityn kirjastoja, joiden avulla voimme muodostaa yhteyden Unity -pelimoottoriin.
  • Julkinen luokka Mook: Mono Käyttäytyminen: Tämä rivi ilmoittaa luokan ja sen nimen - mook .
  • Yksityinen kellukkeen terveys: Tämä ilmoittaa yksityisen luokan muuttujan (jota voidaan muuttaa vain luokan sisältä). Muuttujalle annetaan arvo in alkaa .
  • Mitätön aloitus (): Tämä julistaa menetelmän nimeltä alkaa . Start on erityinen menetelmä, joka suoritetaan vain kerran, kun peli käynnistetään.
  • Mitätön päivitys (): Päivitys on toinen erityinen menetelmä, joka toimii jokaisessa kehyksessä. Suurin osa pelin logiikastasi menee tänne.
  • // jos kohtaat pelaajan tiellä, tapa hänet: Tämä rivi on kommentti (C#jättää huomiotta kaikki rivit, jotka alkavat kaksoisviilulla). Kommentteja käytetään muistuttamaan itseäsi siitä, mitä tietyt koodibitit tekevät. Tässä tapauksessa tätä kommenttia käytetään monimutkaisempaan koodilohkoon, joka todella tekee sen, mitä kommentti kuvaa.

Kera alkaa ja Päivittää , voit luoda omia menetelmiäsi lähes millä tahansa nimellä. Luomasi menetelmät eivät kuitenkaan toimi, ellei niitä kutsuta. Ilmoitetaan menetelmä hypoteettiselle luokalle nimeltä addTwoNumbers joka yhdistää kaksi numeroa yhteen:

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

Tämä ilmoittaa julkisen (muiden objektien käytettävissä) menetelmän, joka palauttaa kelluvan, ns addTwoNumbers , joka ottaa syötteeksi kaksi kelluketta (ns kohteeseen ja b ). Sitten se palauttaa kahden arvon summan tulostenaan.

Tämän menetelmän kutsuminen samasta luokasta (esimerkiksi sisäpuolelta) Päivittää ) näyttää tältä:

float result = addTwoNumbers(1, 2);

Menetelmän kutsuminen toiselta luokalta on samanlainen:

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

Jälleen tämä luo vain luokan ilmentymän, käyttää sopivaa menetelmää ja syöttää sille numerot, jotka haluamme lisätä, ja tallentaa sitten tuloksen tulos . Yksinkertainen.

Jos komentosarjasi on liitetty objektiin, jolla on erityisominaisuuksia (kuten hiukkaslähetin), jota ei voida käyttää normaalien GameObject -parametrijoukkojen alla, voit halutessasi käsitellä sitä erilaisena peliyksikkönä käyttämällä GetComponent menetelmä.

Sen syntaksi näyttää tältä:

GetComponent().Play();

Jos jokin näistä on sinulle tuntematon, mene takaisin ja käy läpi C# -aluke. Se säästää paljon turhautumista, kun jatkamme.

4. Unity Basics

Tässä osiossa tutustumme Unity -moottorin perusmekaniikkaan. Unityn työnkulku menee jotenkin näin:

  1. Luo kokonaisuus palvelemaan roolia pelissä (tyhjä GameObjects voidaan käyttää abstrakteihin loogisiin tehtäviin).
  2. Kirjoita tai etsi luokkatiedosto ja lisää se entiteettiin komentosarjana (käyttämällä Lisää komponentti -painiketta tarkastaja näkymä.
  3. Juosta > testata > virheenkorjaus > toistaa kunnes se toimii ja siirry seuraavaan pelin elementtiin.

Unity sisältää useita perusnäkymävälilehtiä, jotka voidaan sijoittaa eri tavoin käyttäjän makuun. Viisi suurta ovat:

  1. Peli: näyttää pelin käynnissä olevan esiintymän, jonka kanssa voit olla vuorovaikutuksessa ja testata.
  2. Näkymä: tarjoaa staattisen, muokattavan version pelimaailma .
  3. Tarkastaja: voit muokata yksittäisiä kokonaisuuksia pelimaailmassa valitsemalla ne toimittaja välilehti.
  4. Projekti: voit selata projektin tiedostoja ja vetää malleja, materiaaleja ja muita resursseja toimittaja -välilehti asettaaksesi ne pelimaailmaan.
  5. Hierarkia: tämä välilehti näyttää kaikki maailman objektit, joiden avulla voit löytää kaukaisia ​​kohteita näytöstä ja vanhemmat entiteetit toisilleen napsauttamalla ja vetämällä.

Katso alla olevasta kaaviosta kaikkien näiden kohteiden sijainnit:

4.1 Yksikköyksiköt

4.1.1 Silmät

Silmät ovat tie 3D -geometria on edustettuna Unityssä. Voit joko käyttää Unityn sisäänrakennettua primitiivinen esineitä (kuutiot, pallot, sylinterit jne.) tai tuoda omia 3D -mallejasi mallinnuspaketista, kuten Tehosekoitin tai maya . Unity tukee erilaisia ​​3D -formaatteja, mukaan lukien .fbx ja .3ds .

Perustyökalut silmien käsittelyyn ovat skaalaus-, kierto- ja käännöspainikkeet käyttöliittymän vasemmassa yläkulmassa. Nämä painikkeet lisäävät ohjauskuvakkeita muokkausnäkymän malleihin, joita voidaan sitten käyttää niiden hallitsemiseen avaruudessa. Jos haluat muuttaa objektin tekstuuria tai fysiikan ominaisuuksia, valitse ne ja käytä tarkastaja tarkastella materiaalia ja jäykkä runko elementtejä.

4.1.2 GUI -elementit

Perinteiset graafiset käyttöliittymät ja teksti voidaan näyttää käyttämällä GUI -teksti ja GUI -rakenne GameObjects editorissa. Vankka ja realistinen tapa käsitellä käyttöliittymäelementtejä on kuitenkin käyttää 3D -teksti ja Quad GameObjects (läpinäkyvä tekstuuri ja valaisematon läpinäkyvä varjostin) HUD -elementtien sijoittamiseksi pelimaailmaan kokonaisuuksina.

Kohteessa hierarkia Nämä pelielementit voidaan vetää pääkameran päälle, jotta heistä tulisi lapsia, mikä varmistaa, että he liikkuvat ja pyörivät kameran kanssa.

GUI -elementtien (teksti ja tekstuurit) kokoa ja mittakaavaa voidaan säätää tarkastaja -välilehden asianomaisten kenttien avulla.

4.1.3 Materiaalit

Materiaalit ovat tekstuurien ja varjostimien yhdistelmiä, ja ne voidaan vetää suoraan peliobjekteihin projekti -välilehdeltä. Suuri määrä varjostimia on Unity Pron mukana, ja voit säätää niihin liitettyä tekstuuria tarkastaja -välilehdellä kohteelle, johon niitä käytetään.

Jos haluat tuoda tekstuurin, muunna se a: ksi .jpg , .png tai .bmp ja vedä se kohtaan omaisuutta kansio Unity -projektihakemistossa (joka näkyy Omat asiakirjat oletuksena). Muutaman sekunnin kuluttua editorissa näkyy latauspalkki. Kun se on valmis, löydät kuvan tekstuurina hanke välilehti.

4.1.5 Valot

Valot ovat GameObjects jotka heijastavat maailmaa. Jos kohtauksessasi ei ole valoja, kaikki monikulmiot piirretään samalla kirkkaustasolla, mikä antaa maailmalle tasaisen, pestyn ilmeen.

Valot voidaan sijoittaa, kiertää ja niillä on useita sisäisiä ominaisuuksia, joita voit muokata. The intensiteetti liukusäädin säätää valon kirkkautta ja valikoima ohjaa kuinka nopeasti se häviää.

Ohjeet kohdassa näkymä näkymä näyttää suurimman valaistusalueen. Pelaa molemmilla asetuksilla halutun vaikutuksen saavuttamiseksi. Voit myös säätää valon väriä, kuviota ( eväste näytetään pintaan valoa osoitetaan ja millainen soihdutus näkyy näytöllä, kun katsot suoraan valoa. Evästeen avulla voidaan väärentää realistisempia valokuvioita, luoda dramaattisia vääriä varjoja ja simuloida projektoreita.

Valon kolme päätyyppiä ovat paikalla , kohta ja suuntaava .

Kohdevalot sijaita 3D -tilassa ja heijastaa valoa vain yhteen suuntaan muuttuvan kulman kartiossa. Nämä ovat hyviä taskulampuille, valonheittimille ja yleensä antavat sinulle tarkemman hallinnan valaistuksesta. Kohdevalot voivat heittää varjoja.

Kohdevalot sijainnin 3D -tilassa ja valaise tasaisesti kaikkiin suuntiin. Kohdevalot eivät heitä varjoja.

Suuntavalot Lopuksi niitä käytetään auringonvalon simulointiin: he heijastavat valoa suunnassa ikään kuin äärettömän kaukaa. Suuntavalot vaikuttavat kaikkiin kohtauksiin ja voivat tuottaa varjoja.

4.1.6 Hiukkasjärjestelmät

TO Hiukkasjärjestelmä on GameObject joka tuottaa ja ohjaa satoja tai tuhansia hiukkasia samanaikaisesti. Hiukkaset ovat pieniä, optimoituja 2D -objekteja, jotka näytetään 3D -tilassa. Hiukkasjärjestelmät käyttävät yksinkertaistettua hahmonnusta ja fysiikkaa, mutta voivat näyttää tuhansia kokonaisuuksia reaaliajassa ilman änkytystä, joten ne ovat ihanteellisia savulle, tulelle, sateelle, kipinöille, taikatehosteille ja muille.

On monia parametreja, joita voit säätää näiden vaikutusten saavuttamiseksi, ja voit käyttää niitä kutelemalla hiukkasjärjestelmän komponenttieditori > hiukkasjärjestelmän valitseminen > tarkastaja -välilehden avaaminen . Voit muuttaa kunkin hiukkasen kokoa, nopeutta, suuntaa, pyörimistä, väriä ja rakennetta ja asettaa useimmat näistä parametreista myös ajan myötä.

Alla törmäys -attribuutti, jos otat sen käyttöön ja asetat simulaatiotilaksi maailman- saat hiukkasia, jotka törmäävät maailman esineisiin, joita voidaan käyttää useisiin realistisiin hiukkasvaikutuksiin, kuten sade, liikkuva vesi ja kipinät.

5. Esimerkki: Pelin peruselementit

Tässä opetusohjelmassa aiomme tehdä yksinkertaisen pelin Pong - jotain, jota olemme käsitelleet useita kertoja DIY: ssä aiemmin:

  • Arduino Classic Pong
  • Arduino OLED Pong

Tässä osassa käymme läpi ydinelementtien järjestämisen - komentosarjan opetusohjelma tulee myöhemmin.

Hajotetaan ensin Pongin peli sen peruskomponentteihin. Ensinnäkin tarvitsemme kaksi meloa ja pallon. Pallo lentää näytön ulkopuolella, joten haluamme mekanismin sen nollaamiseksi. Haluamme myös tekstin, joka näyttää nykyisen pistemäärän, ja kaikkien Unityn ydintekijöiden näyttämiseksi haluamme hienon hiukkasefektin, kun osut palloon. Koko peli on valaistava dramaattisesti.

Se hajoaa a: ksi pallon esine (pallo), a kuteja , kaksi meloa rekvisiitta hiukkaspäästöt liitteenä, a 3D-teksti-kokonaisuus ja a kohdevalo . Tässä opetusohjelmassa käytämme fyysistä oletusmateriaalia pomppia , kanssa pomppiva yhdistelmä asetettu moninkertaistaa . Asetus näyttää tältä kymmenessä kuvakaappauksessa:

Luo ensin kuution tuki meloa varten.

Skaalaa se asianmukaisesti, monista se ja laita a pallo pallojen välissä.

Luo sitten 3DText -objekti ja asteikko ja asema oikein, muuttamalla Fonttikoko -määritteellä saat vähemmän pikselöityä kuvaa.

Luo seuraavaksi kaksi hiukkasjärjestelmät , valitse haluamasi ominaisuudet ja kiinnitä ne päitsimiin.

Seuraavaksi haluat aseta ja kierrä kameraa niin, että se kehystää kohtauksen oikein. Kun kamera on valittuna, näet pienen esikatselun kameran näkymästä oikeassa alakulmassa.

Ennen kuin lopetamme, meidän on luotava kaksi lisäkuutiota puskuriksi estämään pallon pomppiminen pelialueelta. Voimme tehdä niistä näkymättömiä poistamalla valinnan verkon renderöija kohdassa tarkastaja -välilehti .

Jos osut peliin, näet nyt pelimme perusosat. He eivät tee vielä mitään, mutta siihen päästään!

Nyt kun olemme saaneet tämän kokoonpanon, aiomme puhua siitä, mikä liittyy näiden elementtien komentosarjoihin pelin tekemiseksi.

6. Käsikirjoitus Unityssä

Kun objektiin on liitetty komentosarja, voit tarkistaa sen kaksoisnapsauttamalla sitä tarkastaja . Tämä avautuu MonoDevelop , Unityn oletuskehitysympäristö. Pohjimmiltaan Monodevelop on tekstieditori, jonka ominaisuudet on erityisesti optimoitu ohjelmointia varten.

Avainsanat ja kommentit on korostettu sininen ja vihreä , ja numeeriset arvot ja merkkijonot näkyvät netto . Jos olet käyttänyt Eclipse tai muut IDE: t, MonoDevelop on hyvin samanlainen. Sinä pystyt rakentaa skriptisi editorista, tarkistaaksesi syntaksivirheet, esimerkiksi näin:

Yleensä saadaksesi komentosarjasi vuorovaikutukseen Unityn kanssa, sinun on viitattava elementteihin, joita komentosarjan sisältävä objekti omistaa (näet luettelon näistä elementeistä kohdasta tarkastaja välilehti, kun vastaava kohde on valittu). Voit sitten kutsua menetelmiä tai asettaa muuttujia kullekin näistä elementeistä haluttujen muutosten tekemiseksi.

Jos haluat objektin komentosarjan vaikuttavan toisen objektin ominaisuuksiin, voit luoda tyhjän GameObject muuttujaa komentosarjassasi ja käytä tarkastaja liittää sen toiseen kohtaukseen.

Luettelo esineistä, joita esineellä voi olla, on seuraava (otettu yhden melaamme tarkastajanäkymästä yllä olevassa esimerkissä):

  1. Muuttaa
  2. Kuutio (Mesh -suodatin)
  3. Laatikon törmäyslaite
  4. Mesh Renderer

Kukin näistä objektin piirteistä voidaan vaikuttaa käsikirjoituksen sisältä. Seuraavaksi katsomme tarkalleen kuinka.

6.1 Muunnos

GameObjectin muuntotoiminnot Unityssä ohjaavat kohteen fyysisiä parametreja: sen asteikko , sen asema , ja se on suuntautuminen . Voit käyttää niitä seuraavan skriptin avulla:

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

Yllä olevissa esimerkeissä nimetyt muuttujat ovat nimissä määriteltyjä tyyppejä. Tässä on muutamia keskeisiä yksityiskohtia: sijainti ja asteikko tallennetaan odotetusti nimellä Vector3s . Voit käyttää X , JA ja KANSSA jokaisen komponentin (esim. muuttaa.asento.y antaa kohteen etäisyyden nollatason yläpuolelle).

Kuitenkin välttää kardaanilukko , kierrokset käsitellään muodossa Kvaternionit (nelikomponenttiset vektorit). Koska kvaternioiden käsinkäsittely on intuitiivista, voit manipuloida kierroksia Eulerin kulmilla käyttämällä Quaternion.Euler menetelmä näin:

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

Jos haluat siirtää esineitä sujuvasti paikasta toiseen, löydät Slerp menetelmä kvaternioneille ja vektori3: lle hyödyllinen. Slerp ottaa huomioon kolme argumenttia - nykyinen tila, lopullinen tila ja muutoksen nopeus ja interpoloi sujuvasti niiden välillä annetulla nopeudella. Syntaksi näyttää tältä:

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

6.2 Renderöija

Unityn renderöintitoimintojen avulla voit hallita tapaa, jolla rekvisiittapinnat näytetään näytöllä. Voit määrittää tekstuurin uudelleen, muuttaa väriä ja muuttaa kohteen varjostinta ja näkyvyyttä. Syntaksi näyttää tältä:

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

Useimmilla näistä on melko selvät toiminnot. Ensimmäinen esimerkki tekee kyseisestä kohteesta näkymättömän: hyödyllinen temppu monissa tilanteissa. Toisessa esimerkissä annetaan uusi RGB väri (eli vihreä) kyseiseen kohteeseen. Kolmas määrittää hajanaisen tekstuurin uudelle Texture -muuttujalle. Viimeinen esimerkki muuttaa objektin materiaalin varjostimen uuteen määritettyyn varjostimmuuttujaan.

6.3 Fysiikka

Unityn mukana tulee integroitu fysiikkamoottori, jota kaikki fysiikan hiekkalaatikkopelit käyttävät. Tämän avulla voit määrittää objektien fyysiset ominaisuudet ja antaa niiden simuloinnin yksityiskohtien käsitellä puolestasi. Yleensä sen sijaan, että yrittäisit toteuttaa omaa fysiikkaa oppikirjan ja muunnosjärjestelmän avulla, on yksinkertaisempaa ja kestävämpää käyttää Unityn fysiikkamoottoria mahdollisimman suuressa määrin.

Kaikki fysiikan rekvisiitta vaatii törmäilijät . Itse simulaatiota hoitaa kuitenkin a jäykkä runko , joka voidaan lisätä kohtaan tarkastaja näkymä. Jäykät kappaleet voivat olla kinemaattinen tai ei -kinemaattinen .

Kinemaattinen fysiikan rekvisiitta törmää (ja vaikuttaa) ei -kinemaattiseen fysiikan rekvisiittaan ympärillään, mutta törmäys ei vaikuta niihin itse. Staattiset kinemaattiset rekvisiitta ovat sananlaskun mukaan siirrettäviä esineitä ja liikkuvat kinemaattiset esineet ovat sananlaskun pysäyttämätön voima (tietämyksen mukaan törmääessään ne yksinkertaisesti kulkevat toistensa läpi).

Tämän lisäksi voit säätää kohteen kulmavetoa (kuinka paljon energiaa se vie pyörittämiseen), muuttaa sen massaa, määrätä, vaikuttaako siihen painovoima vai ei, ja kohdistaa siihen voimia.

Esimerkkejä:

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

Nämä kaikki ovat melko itsestään selviä. Ainoa huomioitava asia tässä on käyttö muuttaa. eteenpäin . Vector3: ssa on kolme osaa ( .eteenpäin , . ylös ja .Okei ), johon pääsee käsiksi ja pyörii heidän kanssaan ( eteenpäin on sinisen nuolen suunta editorissa). The muuttaa. eteenpäin avainsana on yksinkertaisesti nykyisen objektin eteenpäin suuntaava vektori, jonka suuruus on 1. Se voidaan kertoa kellukkeella, jotta objektiin saadaan enemmän voimaa. Voit myös viitata muuttaa. ylös ja muuttaa. oikein ja kieltää heidät kääntymään.

6.4 Törmäys

Usein peliä rakennettaessa haluat törmäyksen johtavan koodin jonkinlaiseen muutokseen pelkän fysiikan simulaation lisäksi. Tätä varten tarvitset törmäyksen havaitsemismenetelmä .

Unityn törmäysten havaitseminen vaatii jonkin verran valmistelutyötä. Ensinnäkin ainakin yksi törmäyksen kohteista tarvitsee ei-kinemaattinen jäykkä runko kiinnitetty siihen. Molemmilla objekteilla on oltava oikeat törmäykset, jotka on asetettava ei-liipaisimiksi. Molempien kohteiden kokonaisnopeuden on oltava riittävän alhainen, jotta ne todella törmäävät sen sijaan, että he vain hyppisivät toistensa läpi.

Jos olet huolehtinut kaikesta, voit tarkistaa törmäyksen sijoittamalla erityisen törmäystunnistusmenetelmän komentosarjaan, joka on liitetty kohteeseen, jonka kanssa haluat tarkistaa törmäyksen. Menetelmä näyttää tältä:

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

Tämä menetelmä suoritetaan automaattisesti ensimmäisen kehyksen aikana, kun toinen kohde koskettaa objektiasi. Törmäysyksikkö muut on viittaus osumaasi kohteeseen. Voit esimerkiksi viitata siihen peliobjekti , jäykkä runko ja muuttaa ominaisuuksia manipuloida sitä eri tavoin. Sillä aikaa OnCollisionEnter on luultavasti yleisin käyttämäsi toiminto, voit myös käyttää OnCollisionExit ja OnCollisionStay (jolla on muuten sama syntaksi ja käyttö), jotka aktivoituvat ensimmäisen kehyksen aikana, kun lopetat törmäyksen esineeseen, ja jokaisen kehyksen aikana, kun törmäät objektiin.

Joskus voi myös olla hyödyllistä tehdä ns harhautus . Rikastuksessa äärettömän ohut viiva (a säde ) heitetään ympäri maailmaa jostakin alkuperästä jonkin vektorin varrella, ja kun se osuu johonkin, ensimmäisen törmäyksen sijainti ja muut tiedot palautetaan. Raycastin koodi näyttää tältä:

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

Tämä heijastaa säteen nykyisen objektin sijainnista -Vector3.up (suoraan alas) ja linkittää muuttujan osuma ensimmäiseen kohteeseen, johon se törmää. Kun säteesi on osunut johonkin, voit käyttää sitä osuma. etäisyys määrittääksesi, kuinka kaukana se on, tai osuma.GameObject manipuloimaan osumaasi esinettä.

Tällaisia ​​säteilylähteitä voidaan käyttää ampujien määrittämään, mihin ase osoittaa, tai valita kohteita, kun kamera katsoo niitä, tai tietyille liikemekaniikan tyyleille.

6.5 Ajan korjaus

Yksi tärkeä tekijä, joka on pidettävä mielessä, kun käsittelet esineitä tällä tavalla, liittyy ruudunpäivitysnopeus . Riippumatta siitä, kuinka huolellisesti optimoit, kehysnopeudet vaihtelevat aina, etkä halua pelin nopeuden muuttuvan vastaavasti. Jos joku muu käyttää peliäsi nopeammalla tietokoneella kuin sinä olet sitä kehittänyt, et halua pelin toimivan kaksinkertaisella nopeudella.

Voit korjata tämän kertomalla käyttämäsi arvot viimeisen kehyksen muodostamiseen kuluneella ajalla. Tämä tehdään käyttämällä Time.deltaTime . Tämä muuttaa tehokkaasti kaikkien muuttujien nopeutta, josta kasvatat jokaista kuvaa muutos kehystä kohden kohteeseen muutos sekunnissa , ja sinun pitäisi todennäköisesti tehdä tämä muutos mihin tahansa arvoon, jota lisäät tai pienennät joka kehyksessä.

6.6 Äänilähteet ja kuuntelijat

Nyt kun olemme käsitelleet objektien luomisen, renderöinnin ja hallinnan, puhutaanpa toisesta merkityksestä, jota tietokonepelit voivat palvella: nimittäin ääni . Unity tukee kahdenlaisia ​​ääniä: 2D ja 3D ääniä. 3D -äänien äänenvoimakkuus vaihtelee etäisyyden mukaan ja vääristyvät liikkuessaan suhteessa kameraan. 2D -äänet eivät.

2D-äänet sopivat puheäänentoistoon ja taustamusiikkiin, ja 3D-äänet koskevat maailman tapahtumien tuottamia ääniä. Jos haluat muuttaa, onko ääni 3D, valitse se kohdassa hanke näkymässä, vaihda kohtaan tarkastaja ja valitse sopiva vaihtoehto avattavasta valikosta ja paina sitten tuoda uudelleen -painiketta.

Jotta voit todella toistaa äänen, sinun on liitettävä audiolähde rekvisiittiin (rekvisiitti, josta haluat äänen tulevan, jos kyseessä on 3D -ääni). Sitten sinun on avattava äänileike -kenttään ja valitse äänitiedosto.

kuinka saada Windows 10 flash -asemaan

Voit käyttää myAudioSource.Pause () ja myAudioSource.Play () hallita näitä äänitiedostoja. Voit säätää putoamiskäyttäytymistä, äänenvoimakkuutta ja Doppler -siirtoa tarkastaja -välilehti.

6.7 Tulo

Peli, joka ei vaadi käyttäjältä mitään panosta, ei ole paljon peliä. Siellä on paljon erilaisia ​​syötteitä, joista voit lukea, ja lähes kaikki ne ovat käytettävissä Syöttö ja Avainkoodi esineitä. Alla on esimerkkejä syöttölausekkeista (joiden arvot on arvioitu jokaisessa kehyksessä).

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

Näiden rivien toiminnot ovat enimmäkseen itsestään selviä. Näiden kolmen syöttöviittauksen avulla voit rekonstruoida useimpien nykyaikaisten 3D -tietokonepelien ohjausjärjestelmät.

6.8 Skriptin virheenkorjaus

Sanotaan, että skripti ei toimi. Kuten hyvä lääkäri sanoo, bangups ja hangups voivat tapahtua sinulle. Jos C#-laitteessasi on suoria syntaksivirheitä, peli yleensä kieltäytyy suorittamasta, kun painat toistoa, ja jos saat melko hyödyllisiä virheilmoituksia, jos rakentaa skriptejä editorin sisältä. Katso alempaa:

Nämä virheet eivät yleensä ole vaikeinta korjata. Mikä voi olla ongelmallisempaa, ovat hienovaraiset semanttiset virheet, joissa olet onnistuneesti kirjoittanut tiedoston, joka on täynnä kelvollista C# - vain sellaista, joka ei tee niin kuin luulit. Jos sinulla on jokin näistä virheistä ja sinulla on ongelmia sen jäljittämisessä, voit parantaa tilannetta muutamalla tavalla.

Ensimmäinen on keskeyttää pelin suorittaminen ja tarkistaa konsoli. Voit keskeyttää pelin napsauttamalla tauko -kuvaketta editorin yläosassa ja valitse sitten konsoli pohjasta ikkuna valikosta (tai painamalla Ctrl > Siirtää > C ). Vaikka virheitä ei olisi, varoitukset voivat silti antaa vihjeitä siitä, mikä saattaa mennä pieleen.

Jos tämä ei toimi, voit myös yrittää saada käsityksen käsikirjoituksesi tilasta tulostamalla sisäisten muuttujien tilan sen varmistamiseksi, että ohjelma tekee mitä luulet tekevän. Voit käyttää Debug.Log (merkkijono) tulostaa merkkijonon sisällön konsolille, kun ohjelman suoritus osuu kyseiselle riville. Yleisesti ottaen, jos työskentelet taaksepäin siitä, mitä mielestäsi pitäisi tapahtua, niiden asioiden kautta, joiden pitäisi tapahtua, päädyt lopulta siihen pisteeseen, jossa virheenkorjaustuloksesi eivät tee sitä, mitä odotat heidän tekevän. Siinä on sinun virheesi.

7. Esimerkki: Scripting Pong

Pongin rakentamiseksi hajotetaan peli sen ydinelementteihin: tarvitsemme pallon, joka rikoo edestakaisin melojen välillä kasvavalla nopeudella, tarvitsemme tulostaulun, joka tietää, milloin pallot ovat ohittaneet melat, ja tarvitsemme mekanismin käynnistää pallon uudelleen, kun niin tapahtuu. Hyvä ensimmäinen askel olisi lisätä palloon ei-kinemaattinen jäykkä runko, kaksi kinemaattista jäykkää runkoa päihin, poistaa kaikkien niiden painovoima käytöstä ja määrittää sopiva fyysinen materiaali vakiovarusteista ( pomppia kanssa pomppiva yhdistelmä asetettu moninkertaistaa ).

Alla voit katsoa pallon käsikirjoituksen ja selittävät kommentit. Pallon on saavutettava joitain perustavoitteita: sen pitäisi pomppia monimutkaisessa kuviossa, joka pitää aina liikkeen molemmilla akseleilla, ja sen pitäisi kiihtyä haastavaan, mutta ei mahdottomaan tahtiin vaakasuunnassa.

BallHandler.cs

Seuraavaksi meidän on kirjoitettava mela käsikirjoitukselle, jonka voit tarkastella alla. Mela täytyy liikkua ylös ja alas vastauksena näppäimen painalluksiin (mutta ei tiettyjen rajojen ulkopuolella). Sen on myös käynnistettävä hiukkasjärjestelmä, kun se törmää johonkin.

PaddleHandler.cs

Seuraavaksi tarvitsemme vihollisen tekoälyn: jotain, joka saa vihollisen melon seuraamaan palloa kiinteällä nopeudella. Tätä varten käytämme Vector3.Slerpia maksimaalisen yksinkertaisuuden vuoksi. Haluaisimme myös saman hiukkaskäyttäytymisen, jonka näemme omalla melaamme.

EnemyAI.cs

Lopuksi tarvitsemme käsikirjoituksen tulostaulun päivittämiseksi ja pallon nollaamiseksi, kun se menee rajojen ulkopuolelle.

TulostauluUpdater.cs

Kun käsikirjoitukset on liitetty ja viitteet on täytetty, kun pelaamme Pong -peliä, koemme pelaamisen!

Sinä pystyt Lataa Pong -demoni , jos haluat nähdä kaiken, mitä olen esittänyt, toiminnassa. Se toimii Windows-, Mac- ja Linux -järjestelmissä.

8. Dokumentaation tutkiminen / lisätietoja

Unity on monimutkainen moottori, jolla on paljon enemmän ominaisuuksia kuin mitä tämän tyylisessä oppaassa voitaisiin käytännössä kuvata, ja tämä on ennen kuin lisäät Internetiin saatavilla olevien (ilmaisten ja kaupallisten) Unity -laajennusten laajan valikoiman. Tämä opas antaa sinulle vahvan lähtökohdan pelin kehittämiseen, mutta itseopiskelu on tärkeä taito kaikissa pyrkimyksissä, ja kaksinkertaisesti täällä.

Keskeinen voimavara tässä on Unity ScriptReference . ScriptReference on haettavissa oleva tietokanta, joka on saatavana sekä C#: lle että Javascriptille. Siinä on luettelo kaikista Unity -komennoista ja -ominaisuuksista, niiden toimintojen kuvaukset ja lyhyet esimerkit syntaksista.

Jos sinulla on ongelmia Unityn editorin ja käyttöliittymän kanssa tai aivan kuten video-opetusohjelmat ensisijaisesti, on olemassa pitkä luettelo korkealaatuisista Unity -video -opetusohjelmat saatavilla. Laajempi (mutta vähemmän laaja) tekstiviestejä Unitylle ovat saatavana myös CatLikeCodingilta.

Lopuksi, jos sinulla on kysymyksiä, jotka eivät kuulu asiakirjojen tai opetusohjelmien piiriin, voit esittää tiettyjä kysymyksiä osoitteessa Vastaukset.Unity3d.com . Muista, että vastaukset ovat vapaaehtoisia, joten kunnioita heidän aikaansa ja etsi ensin tietokannasta varmistaaksesi, että kysymykseesi ei ole jo vastattu.

9. Pelin rakentaminen / kääntäminen itsenäiseksi sovellukseksi

Kun olet rakentanut jotain, josta olet ylpeä (tai olet lopettanut hiukan hämärän Pong -esimerkkimme harjoittelun), on aika siirtää pelisi editorista ja muuttaa se sellaiseksi, jonka voit julkaista Internetissä ja pakottaa ystävillesi ja perheellesi pelaamaan. Tätä varten sinun on luotava erillinen sovellus. Hyvä uutinen on, että Unityssä tämä on erittäin, erittäin helppoa. On kuitenkin olemassa muutamia mahdollisia hiccoughs, joista haluat olla varovainen.

Ensinnäkin, tiedä, että voit rakentaa vain virheettömän projektin. Varmista tätä varten, että konsoli on avattu rakennettaessa: on joitakin virheolosuhteita, jotka peli jättää huomiotta editorissa, mutta keskeyttää silti koontiversion. Tämä vain kaataa virheilmoitukset konsoliin, eikä tuloksia näy näytöllä, mikä voi olla turhauttavaa, jos unohdat tarkistaa. Kun olet saanut pelisi kääntämään virheettömästi, voit kuitenkin valita Rakenna asetukset alla Tiedosto valikosta tai paina Ctrl > Siirtää

> B . Tämä avaa yksinkertaisen valintaikkunan, jonka avulla voit rakentaa pelisi useille alustoille.

Prosessi on itsestään selvä: valitse vaihtoehdot ja paina rakentaa ; peli pyytää hakemistoa asennettavaksi ja sijoittaa sekä suoritettavan tiedoston että datahakemiston sinne. Nämä kaksi tiedostoa voidaan pakata yhteen ja jakaa (varmista vain, ettet veloita Unity -demoon rakennetusta pelistä, koska tämä rikkoo käyttöehtoja).

10. Loppuhuomautuksia

Kuten mikä tahansa pelinkehitystyökalu, Unityn menestyksen avain on iteratiivinen kehitys. Sinun on rakennettava hallittavia lisäyksiä - ole kaikin puolin kunnianhimoinen, mutta ole kunnianhimoinen pieninä paloina ja järjestä ne palasiksi niin, että vaikka et saavuta lopullista kunnianhimoasi, saat ainakin johdonmukaisen tuote.

Hanki ensin tärkeimmät elementit: pidä mielessäsi idea vähiten elinkelpoinen tuote , yksinkertaisin, paljain luu, jonka voit mahdollisesti luoda ja silti tuntuu siltä, ​​että olet saavuttanut jotain arvokasta. Siirry tähän minimaaliseen elinkelpoiseen projektiin, ennen kuin siirryt suurempiin tavoitteisiin.

Tämä opetusohjelma antaa sinulle vahvan lähtöpaikan, mutta paras tapa oppia Unity on rakentaa peli. Aloita pelin rakentaminen, täytä tietosi aukot niiden tullessa esiin, ja asteittainen tiedonvirtaus hämärtää pois asiat, joita et tiedä yllättävän nopeasti.

Jos olet lukenut tämän kaiken ja olet hiukan hukassa Unityn edellyttämällä koodauksella, tarkista, miten opi pelikehitystä Unity Learnin avulla ja lue myös oppaamme videopelien tekemisestä ilman ohjelmointia.

Unity on tehokas työkalu, ja hieman tutkimalla voit rakentaa sen avulla vaikuttavia projekteja nopeammin kuin odotit. Kerro meille, mitä olet rakentanut alla oleviin kommentteihin - haluaisimme nähdä!

Jaa Jaa Tweet Sähköposti 3 tapaa tarkistaa, onko sähköposti oikea tai väärennetty

Jos olet saanut sähköpostin, joka näyttää hieman kyseenalaiselta, on aina parasta tarkistaa sen aitous. Tässä on kolme tapaa kertoa, onko sähköposti oikea.

Lue seuraava
Liittyvät aiheet
  • Ohjelmointi
  • Ohjelmointi
  • Pitkä lomake
  • Longform -opas
Kirjailijasta Andre Infante(131 artikkelia julkaistu)

Lounaisosassa asuva kirjailija ja toimittaja Andre on taatusti toimiva jopa 50 celsiusasteeseen asti ja on vedenpitävä 12 metrin syvyyteen.

Lisää Andre Infantelta

tilaa uutiskirjeemme

Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e -kirjoja ja ainutlaatuisia tarjouksia!

Klikkaa tästä tilataksesi