IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

1. diel - 3D strieľačka v Unity - Terén a pohyb hráča

Vitajte v prvej lekcii on-line kurzu, v ktorom si naprogramujeme svoju prvú 3D strieľačku v Unity. Pôjde o hru z pohľadu prvej osoby, tzv. FPS (First Person Shooter), čo je zrejme najpopulárnejší žáner 3D hier.

Vytvorenie projektu

Po otvorení Unity sa nám zobrazí okno s názvom Unity Hub. Klikneme na tlačidlo New. Potom sa nám otvorí nové okno s názvom Create a new project with Unity:

Vytvorenie nového projektu v Unity - Tvorba 3D hier v Unity

Názov si zvoľte aký je vám najmilšie (ak budete mať iný názov ako tu ja, nič sa tým pre vás nemení). Ja som pomenoval projekt RIGIDBODY_COMPONENT. Lokácii projektu nechajte v predvolenom nastavení, ak ho teda nechcete ukladať do nejakej špeciálnej zložky. Potom už len klikneme na CREATE.

Akonáhle sa nám otvoril náš projekt, vyzerá nasledovne:

Nový projekt v Unity 3D - Tvorba 3D hier v Unity

Projekt už obsahuje direct light (priame svetlo), ktoré je tvorené bodom, ktorý má určitý dosah. V tomto prípade si ho môžeme predstaviť ako slnko. Zároveň projekt obsahuje předvytvořenou kameru. Kamera môže byť neskôr zmazaná alebo vytvorená ďalšie. V prípade viacerých kamier sa musí nastaviť ktorá sa bude zobrazovať v danú chvíľu ako hráčova pohľad. To môžeme nastaviť v Inspector (vlastnostiach) alebo je možné ju prepínať z vytvoreného skriptu. Teraz však zachováme súčasnú scénu ako je.

Terén

Vytvoríme si náš prvý objekt - "Terén". Vytvoríme ho tým spôsobom, že prejdeme kurzorom do okna Hierarchy (sivé pole, ktoré obsahuje SampleScene). Klikneme tu pravým tlačidlom myši a objaví sa nám možnosti čo do scény pridať. Zvolíme 3D Object a klikneme ľavým tlačidlom na Terrain:

Pridanie terénu do 3D hry v Unity - Tvorba 3D hier v Unity

výsledok:

Terén v 3D hre v Unity - Tvorba 3D hier v Unity

Hráč

Po čom chodiť by sme mali. Teraz vytvoríme rovnakým spôsobom akýkoľvek 3D objekt, ktorý bude naším hráčom. Klikneme teda pravým tlačidlom myši do okna Hierarchy a zvolíme 3D Object. Ja som zvolil Capsule (objekt tvaru kapsule). Nastavíme pozíciu Y hráčov o trochu väčšie, než ju má terén, pretože ak by bola rovnaká ako náš terén, tak by sa nám objekty v hre objavili v sebe. Os Y sa nastavuje pomocou desatinných čísel. Osi Y nastavíme hodnotu o približne desatiny väčšia než má hodnota, ktorú zistíme v záložke Inspector po kliknutí na Terrain:

Hráč v 3D hre v Unity 3D - Tvorba 3D hier v Unity

Komponenta RIGIDBODY

Teraz pridáme hráči komponent RIGIDBODY, ktorá sa stará o fyziku objektu. Vďaka tomu sa náš hráč bude ďalej môcť po teréne pohybovať, teda až ho to naučíme.

Klikneme na objekt, ktorý má byť náš hráč ľavým tlačítkom, v záložke Hierarchy (ľavá časť okna Unity), potom sa nám objaví záložka v pravej časti Unity s názvom Inspector. Tu klikneme na Add Component:

Pridanie komponenty objektu v Unity 3D - Tvorba 3D hier v Unity

V zozname vyhľadáme komponent RIGIDBODY.

Pozor, neklikajte na RIGIDBODY2D!

Komponenty vyberieme ľavým tlačidlom myši:

Pridanie RIGIDBODY komponenty v Unity 3D - Tvorba 3D hier v Unity

Ďalej rozkliknite záložku Constraints v komponente RIGIDBODY a nastavíme FREEZE ROTATION X, Y, Z (zaškrtneme ho u všetkých osí z dôvodu, aby nám potom hráč nepadal, keď na neho budeme pôsobiť silou).

Teraz vyberieme hlavné kameru:

Vybrania hlavnej kamery v Unity 3D - Tvorba 3D hier v Unity

Úprava kamery

Objektu Main Camera nastavíme rovnakú pozíciu ako nášmu hráči:

Nastavenie pozície hlavnej kamery - Tvorba 3D hier v Unity

Kameru Main Camera pretiahneme do objektu hráča tak, že ju pretiahneme v okne Hierarchy na objekt hráča:

Pretiahnutia kamery do hráčov - Tvorba 3D hier v Unity

Prvé krôčiky - Skript pre pohyb po teréne

Teraz vytvoríme skript na pohyb hráča po teréne. Opäť klikneme na Add Component a do vyhľadávacieho poľa napíšeme názov skriptu (ja ho pomenujem Move). Klikneme na New script a Create and Add. Akonáhle sa nám objaví skript pri objekte v Inspector, dvakrát naň klikneme ľavým tlačidlom a tým ho otvoríme vo Visual Studiu:

Prvý skript v Unity 3D - Tvorba 3D hier v Unity

Následne vložíme kód nižšie. Jeho jednotlivé časti sú popísané pomocou komentárov:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Move : MonoBehaviour
{
    Rigidbody rb; // proměnná, která zastupuje naši komponentu Rigidbody
    void Start()
    {
        rb = transform.GetComponent<Rigidbody>(); // definujeme rb jakou má hodnotu; transform je objekt, na který je skript napojen
        // funkce GetComponent() nám umožňuje získat komponentu jako proměnou, se kterou můžeme dále pracovat

    }

    // Update is called once per frame= tento skript se spouští každý snímek znovu a znovu pokud máte například 60fps(frames per second) skript se vám spustí 60krát za jednu sekundu.
    void Update()
    {
        if (Input.GetKey(KeyCode.D)) // využíváme podmínky, že pokud někdo stiskne klávesu W, tak se spustí tato podmínka, dokud bude klávesa zmáčknuta
        {
            rb.AddForce(new Vector3(5, 0, 0)); // Zde využíváme toho, že na proměnou přešly vlastnosti a metody komponenty RIGIDBODY.
            // Metoda AddForce() přidá sílu do určitého směru, který nastavujeme pomocí os x, y a z. Zde přidáme hodnotu síly 5 na osu x (do strany).
        }
        if (Input.GetKey(KeyCode.A))
        {
            rb.AddForce(new Vector3(-5, 0, 0));
            // Zde přidáme hodnotu síly -5 na osu x (do strany).
        }
        if (Input.GetKey(KeyCode.W))
        {
            rb.AddForce(new Vector3(0, 0, 5));
            // Zde přidáme hodnotu síly 5 na osu z (dopředu).
        }
        if (Input.GetKey(KeyCode.S))
        {
            rb.AddForce(new Vector3(0, 0, -5));
            // Zde přidáme hodnotu síly -5 na osu z (dozadu).
        }
    }
}

Vďaka využívaniu metódy Update() sa nám spúšťa náš kód automaticky, bez toho aby sme ho museli volať. Potom využívame detekcie kláves a následné akcie v podobe pôsobenia sily (v našom prípade) na objekt (hráča). Klávesy sa dajú nastaviť ľubovoľne a je možné nastaviť túto akciu na akúkoľvek kláves na klávesnici.

Spustenie hry

Spustite hru pomocou ikony Play v okne Unity a skúste si, čo ste dnes vytvorili:

Spustenie hry v Unity 3D - Tvorba 3D hier v Unity

To by bolo pre dnešné lekciu všetko. Dnes sme sa naučili vytvárať projekt, pridávať 3D objekty ak nim komponenty. Vytvorili sme prvý skript, ktorý nám zabezpečuje pohyb hráčov po hernej ploche.

V budúcej lekcii, 3D strieľačka v Unity - Otáčanie kamery pomocou myši , sa naučíme otáčať kameru za myšou.

V ďalšej lekcii, 3D strieľačka v Unity - Otáčanie kamery pomocou myši , sa naučíme ovládať pohľad herné postavy pomocou myši, zároveň definovať herný objekt novým spôsobom a pridávať silu v aktuálnom smere osí.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 239x (2.56 kB)
Aplikácia je vrátane zdrojových kódov v jazyku C#

 

Všetky články v sekcii
Tvorba 3D hier v Unity
Preskočiť článok
(neodporúčame)
3D strieľačka v Unity - Otáčanie kamery pomocou myši
Článok pre vás napísal Tomáš Brabec
Avatar
Užívateľské hodnotenie:
1 hlasov
Hodně zdaru programátoři všeho druhu,doufám ,že nikdy nezažijete nudu.
Aktivity