Bevezetés az FPS készítésbe

FPS játék készítése Unity-ben

Ebben az FPS leírásban igyekszünk mindent a legegyszerűbb szinten tartani, és a hangsúly inkább a koncepción lesz, mintsem a szkriptelésen. Nem lesz semmilyen kód hack-elés és egyéb trükközés az első first person shooter játékunk megalkotásánál.

Az alábbi dolgokra fogunk fókuszálni:

  • WASD mozgás és ugrás
  • Nézelődés az egérrel
  • Elfogadhatóan kinéző fegyver
  • Becsapódáskor robbanó lövedékek
  • Elfogadhatóan kinéző pálya
  • Valami, amire lehet lőni

A mozgás és a nézelődés úgy hangzik, hogy bele kell vessük magunkat a matematikába. Szerencsére a Unity nekünk mindezt megoldja. Az egész játékban körülbelül 50 sornyi kódot fogunk írni (ami önmagában is őrülten kevés).

Egy kis ízelítő az elkészítendő játékról:

Érdekel hogyan kell profi FPS-t készíteni? Látogass el bemutató napunkra.

Amire szükségünk lesz:

Tudás:

A leírás egy alapszintű Unity ismeretet feltételez. Abszolút kezdőknek az egyik alapozó írásunkat javasoljuk. Ha az alapokat viszont jól tudod, akkor az elkövetkező lépések biztosan nem fognak problémát okozni.

Unity verzió:

A leírás 4.5.1f3-mal készült, de mivel csak az alapokat érinti, ezért bármely újabb verzió végigvihető. Újabb verzió esetén a kezelőfelületben minimális eltérések lehetnek, de a koncepció minden esetben ugyanaz. Nem használunk majd semmilyen komolyabb funckiót, így az ingyenes verzió tökéletesen megfelelő lesz.

Művészeti stílus:

A játékunkat a Quake alapján dizájnoljuk. Ez a stílus könnyen megvalósítható és mégis látványos. Számos átlátszósági effektet fogunk használni a futurisztikus hatás érdekében.

Projekt és Scene beállítások

A egy új projekttel fogunk kezdeni, amelyet a File/New Project menüvel indíthatunk. Importáljuk a Character Controller és a a Particles csomagokat. Ha ezeket nem találnánk az Assets Store-ból is letölthetjük őket:

Unity Package import

Ha mindezzel megvagyunk, akkor mentsük el a File/Save Scene-nel az üres terepet “scene_main” néven.

A pálya

Egy jó FPS játéknak látványos pályára van szüksége. Készítsünk egy hasonló pályát a játékunknak:

Alap FPS pálya

A pályakészítést meg tudjuk oldani a Unity alap 3D-s elemeivel. Egyszerűen induljunk el egy Plane lerakásával, amely a talajunk lesz. Néhány Cube-bal alakítsuk ki a falakat és tegyünk rájuk szép textúrát. Pár világító objektummal is még gyorsan fel tudjuk dobni az eredményt.

A mozgás és az FPS kamera

FPS kontroller hozzáadása

Ugorjunk fejest az FPS játékok egyik legkomplikáltabb részébe, a WASD mozgás és az FPS kamera megvalósításába. Aki már próbálta nulláról ezt megírni, az tudja, hogy mekkora áldás a Unity First Person Controller-je. Biztosítja az összes matematikát és így mindössze pár kattintással tudjuk használni a WASD-t a mozgáshoz.

A First Person Controller-t a Standard Assets-ben találjuk meg:

FPS Controller

Húzzuk bele a Hierarchy ablakba:

FPS Controller Hierarchy nézetben

Pozícionáljuk be a megfelelő helyre:

FPS Controller pozícionálás

Ez egy rossz pozíció, mivel kívül esik a pályán:

FPS Controller hibás pozíció

Kisebb finomítások

Három kisebb módosítást kell tennünk a kontrollerünkön.

Először is a Hierarchy nézetben két kameránk van. Az egyik az FPS Controller része, a másik pedig alapból jelen van:

Túl sok Main Camera

A kezdetektől jelen lévő kamerára nem lesz szükségünk, így azt törüljük (amely NEM része az FPS Controller-nek).

Válasszuk ki a Main Camera-t és vizsgáljuk meg az Inspector-t. Változtassuk meg feketére a háttérszínt és kapcsoljuk ki a Mouse Look szkriptet:

Kamera beállítások

Ha megnyomjuk a Play gombot, a játékunkban már tudunk a WASD gombokkal mozogni, ugrani a szóközzel és nézelődni az egérrel. Nagyon egyszerű volt mindezt megcsinálni, mivel a kontroller nagyon sok matekot és kódolást levett a vállunkról.

Az FPS játékok lelke: a fegyver

A terv

Nincs FPS játék fegyver nélkül, hát adjunk egyet a játékosnak! Készíthetünk egy 3D modellt, ami elég bonyolult és időigényes vagy a Unity alapelemekből is építkezhetünk majd textúrázhatunk.

Íme a kész fegyver:

fps kész rakétavető

fps rakétavető

A játék FPS mivolta leegyszerűsíti a dolgunkat. A játékos csak a fegyver felső részét látja, így a többi oldalnak nem kell nagyon művészinek lennie.

A fegyver GameObject

Készítsünk egy üres GameObject-et a GameObject/Create Empty menüvel és nevezzük el “weapon”-nak. Ez egy konténerként fog funkcionálni a többi fegyverelem számára.

Fontos, hogy a fegyver pozíciót váltson, ha a játékos pozíciója megváltozik. Ezt nagyon könnyen kivitelezhetjük a Hierarchy nézetben. A weapon objektumot húzzuk a Main Camera alá úgy, hogy a kameránk legyen a fegyver szülő objektuma. A fegyver innentől kezdve követni fogja a kameránkat.

Fegyver a hierarchiában

A megfelelő pozícionálás

Nincs más dolgunk, mint pozícionálni, forgatni és méretezni a fegyvert, majd feldíszíteni valamilyen textúrával:

Rakétavető modell

A trükkös rész az, hogy úgy helyezzük el a fegyvert, hogy úgy tűnjön, mintha a játékos kezében lenne. Mi ezt az alábbi beállításokkal értük el:

Fegyver GameObject

Cube 1:

Cube 2:

Cube 3:

Egy szép textúra felrakása után a Transparent shader-t válasszuk ki:

Shader

Ha mindent jól csináltunk, akkor a játék indítása után a fegyverünk tökéletesen pozícionált lesz.

A rakéta

A modell

A first person shooter játékok legnépszerűbb fegyvere a rakétavető. Használjuk ismét a Unity alapelemeit egy egyszerű rakéta elkészítéséhez:

Rakéta modell

Nem szeretnénk, hogy a rakéta állandóan jelen legyen, ezért készítsünk belőle Prefab-ot:

Rakéta prefab

A Hierarchy-ból törölhetjük, de a Project-ben tartsuk meg.

A fizikáról

Szeretnénk, ha a rakétánk a fizikának megfelelően működne. Ütköznie kell fallal, játékosokkal és el kell kezdenie repülnie, amint a játékos lő.

Ezeket a kívánalmakat egy Rigidbody komponenssel érhetjük el, amelyet a Component/Physics/Rigidbody menüvel adhatunk hozzá a GameObject-hez:

Rigidbody komponens

A Freeze Rotation-t pipáljuk be, hogy a rakétánk forgás nélkül repüljön előre. A többi paraméter már csak finomhangolás és ízlés kérdése.

A következő rész tartalmából

Izgalmas vizekre fogunk evezni, mivel a rakétánk viselkedését fogjuk beállítani. Egy rakétának repülnie, robbannia kell és mindezt a lehető legegyszerűbben próbáljuk majd megvalósítani.

Skeldar