Blog vadakuma lőfegyverek UDK

belépés

Ma fogunk beszélni az alapismereteket és preferenciái fegyvereket.
UDN fegyver rendszer technikai útmutató (amely hívom WSTG) ad nekünk néhány ötlet: hogyan mechanizmus kapcsoló fegyverek, hogy a felelős egység a tűz rendszer (akár egy egész hálózat), hogy mi a különbség a funkciók a fegyver osztály és alosztályok.

Oldal beállítása Fegyverek elmondja, hogyan modellezzük és import fegyverek, és néhány kell írni a kódot. A UTWeapons.

És mégis, miután elolvasta mindezt, még mindig nem tudom, néhány dolgot:

• Hogyan adjunk fegyvert az alapfelszereltséghez.
• Állítsa be a különböző típusú felvételek fegyvereket.
• Milyen funkciókat kell átírni futtatni néhány jellemzője a fegyverek.
• Hogyan működik a károk rendszer.

Beszél a kár, hogy a rendszer, azt hiszem, ez a téma megérdemel egy külön bemutató (együtt lövedék lövedékek), így nem fogok érinteni ezt a kérdést itt.

A kiindulási pont: InventoryManager

Megjegyzés. InventoryManager kötődik a gyalogot. ahelyett PlayerController.

A másik fontos dolog, amit tudni kell InventoryManager osztályban. Azt, hogy ez csak nyomon követi az aktuális állapotát a fegyvereket: az értékek PendingFire. ebből olvassuk az WSTG. Bár ez a tömb inicializálásakor nem InventoryManager. Más szóval, a bázis nem teszi lehetővé InventoryManager lőni vele (tegyük gúnyolódni hibát, ha mégis megpróbálja) tagjai által elkészített alapértelmezett osztály UDKPawn leltár fut csak InventoryManager. így szükséges, hogy hozzon létre egy alosztálya az utóbbi, annak érdekében, hogy megtanulják, hogyan kell lőni.


És már itt is van. Krutatenyushka. Először hozzá PendingFire amennyit szeretne különböző módok a játékban. Ha nem szeretné, hogy egy alternatív típusú akciót, akkor felejtsd el a második cella tömb. És ha azt szeretnénk, több mint két alternatív lövés, nos, akkor lehet, hogy annyi, mint amire szüksége van.

Pr. tolmács. PendingFire - tartalmazó tömb számát és állapotát alternatív tüzelési módok azonos fegyvereket. Például PendingFire (0) = 0 azt jelenti, hogy a fegyver nem sült el, PendingFire (0) = 1 - fegyver ognya.Po alapértelmezett, a mód felvétel (tűz üzemmód) 0 aktiválható festékkel, és a felvételi mód (tűz üzemmód) 1 PCM.

Mint azt már korábban említettük, InventoryManager kapcsolódó Pawn. így szükséges, hogy mondják el a gyalogot, azért használják a saját InventoryManager:

Lepim fegyverek (szkriptek)

Mi is létrehozhatunk saját fegyvert két módja van: az első, hogy először levelet fegyver viselkedés (hatások lövések, kagyló), és csak ezután teszik a megjelenést neki. Példa fizika pisztoly is csak azt mutatja, hogy a fegyver nem különösebben szükség a modell, annak érdekében, hogy megfelelően működjön. Például hozzon létre egy paintball fegyver.


0. lépés: néhány tipp beállításával fegyverek


• FiringStatesArray (tömb): név szerint meghatározott. Ez azt mondja, az állapota fegyver a kezében, és a tűz üzemmód. Alapértelmezésben nincs használatban. Meg lehet rendelni bármilyen kívánt értéket, ha nem akarja, hogy újra feltalálni a kereket. (Ex Fordítók. Ez a lehetőség már nem szkriptek)

• WeaponFireType (tömb): meghatározott EWeaponFireType. Azt mondja, hogy milyen típusú fegyver tartozik. Majd szerzünk vele később.

• WeaponProjectiles (array). van beállítva a alosztálya lövedékek. Ha a megfelelő mód van beállítva, hogy tűz lövések bizonyos kagyló, tudnod kell néhány kagyló osztály kell hívni a fegyvereket.

• FireInterval (tömb): meghatározott úszó. Ez azt jelzi, hogy mennyi ideig tart egy lövés ebben a módban a tűz. Más szóval - az arány a tűz.

• Spread (tömb): beállítja a hiba a gyújtási irányába (mint a „szórás”). Egyébként minden a golyók (lövedékek) mindig repül jobbra a cél. Ami nem hihető.

• WeaponRange. beállítás egy úszó. Ez határozza meg a maximális hatótávolsága az akciót, kár, lövedék idő az élet. Felhívjuk figyelmét, hogy ez az érték azonos az összes módot a tűz.


Lépés 0,5. Mi hozzá a fegyvereket a leltár

Így teszünk, hogy könnyű lenne nyomon követni a lényege a végrehajtás kódot.
Amikor a játékos újraindul (vagyis a játék kezdetén, indítsa újra a játékot, a játékos feltámadás), Gyalog osztály létrehozott GameInfo és csatolt PlayerController. és GameInfo okoz AddDefaultInventory funkciót. folyamatosan új Pawn paraméterként.
N alapértelmezés szerint nem csinál semmit, kivéve AddDefaultInventory függvényhívás a Pawn osztályban. És ez jó sok okból. Mindazonáltal van egy alap osztály a játék. És valószínűleg lesz még egy alosztálya osztály Gyalog (a karakter). AddDefaultInventory GameInfo osztály átírható, ha van néhány közös paraméter, minden osztályra (például egy kés).

Tehát a saját Pawn osztály, átírjuk AddDefaultInventory funkció, mint ez.

Ez egyszerű. A függvény egy opcionális második paraméter, ha az érték TRUE, akkor megakadályozza az azonnali szerelési fegyvereket. Ha most fut a játék, akkor nem fogja látni semmit annak a ténynek köszönhető, hogy nincs fegyver a saját háló. És mégis, ha írsz „showdebug fegyver” mágikus parancsot a konzolban. látjuk a következő a bal felső sarokban:

Blog vadakuma lőfegyverek UDK

A zöld részét a szöveg azt mondja, a fegyvereket, hogy a játékos jelenleg tart, és megerősíti, hogy a fegyver készen áll a használatra!

Tekintsük WeaponFiring egységet. A BeginState funkció, hívjuk FireAmmunition. majd egy másik TimeWeaponFiring. ami késedelmet okozhat a forgatás a megfelelő tűz üzemmód határozza meg a tömb FireInterval. Ha bármilyen okból, akkor kell zaderzhkaystrelov ha a felvételt, hogy átírják ezt a részét a funkció lesz a helyes döntés.

Ha a rendelkezésre álló idő múlik, működik RefireCheckTimer. Ez ellenőrzi a két dolgot:

1. hogy a csapat megállt fegyverekkel. Ha igen, akkor a parancs érkezik.
2. Ha a stop parancs nem volt fegyver, amikor igény van ShouldRefire funkciót. Ha TRUE értékkel tér vissza, ha hivatkozni FireAmmunition eltérés nélkül a blokk.


Ha a fentiek egyike sem történt meg az, hogy mi abbahagyta a tüzelést, úgynevezett HandleFinishedFiring. amely alapértelmezés szerint úgy a fegyverek ellenőrzésére az Active készüléket.


Figyelmeztetés. Amint lehet, hogy észrevette, az első lövés (vagy FireAmmunition hívás) működik egy kicsit másképp, mint a későbbi felvételek. Tehát, ha kell felírni, hogy mit kiváltó akció, mielőtt a lövés, a helyes dolgot kell csinálni a belső FireAmmunition funkciót. ahelyett BeginState.


ShouldRefire funkció ellenőrzi, hogy a lőszert (alapértelmezés HasAmmo függvény mindig TRUE értékkel tér vissza), ha továbbra is szeretné lőni. (Alapértelmezett funkciói StillFiring visszatér PendingFire funkció).
WSTG megmutatja nekünk FireAmmunition függvény törzse (a régi változat UTWeapon. Bár az összes alapvető elképzeléseket, megmarad, és ott). Először is, a lőszert használt, (az nem történik semmi az alapértelmezett), majd a tűz meghatározni mód, akkor összhangban módban a különböző funkciók érvényesítik.
Más szóval, a tűz fel van szerelve a fegyver, több vagy kevesebb, azt mondja, hogy milyen funkciókat kell dolgoznunk:

EWFT_InstantHit. InstantFire () Vágtázó tűz
EWFT_Projectile. ProjectileFire () tűz lövedékek
EWFT_Custom. CustomFire ​​() Valami házi

P VIGYÁZAT Mielőtt mozog, állítsuk be a fegyvereket adott módja a tűz.

Vágtázó tüzet. (Azonnali tűz)

Mindez ad nekünk a következő eredménnyel:

Továbbá, ha azt veszi észre, hogy alapértelmezés szerint a fegyver a „teljes auto” módban (automatikus). És mi van, ha szüksége van egy lövés módban (azaz meg kell kattintani, ha kell lőni kazhdyyraz gomb)?
Nos, legyen a házi feladatot! Pár tipp:

- PendingFire vissza csak akkor, ha van egy hívás StopFire
- Alapértelmezett StillFiring azt sugallja, hogy PendingFire e st IGAZ értéket, így a fegyver továbbra is égető.


2. lépés: A kijelző a fegyverek

Van egy működő fegyver, itt az ideje, hogy ez a forma. Ehhez meg kell tennünk két dolgot: aki mesh fegyverek, és hogy azt a megfelelő helyre. Ahogy azt várni van különbség a típusú fegyvert a harmadik személy és az első. Mindent megteszünk azért, mivel szükség van mindkét fél számára. De először is, előírni, mi szükség van az egyes helyzetekben: tulajdonítanak a karjaiba modell:

ÉN használ háló egy linket Gun F vagy például. Általában különféle modellek ugyanazt a fegyvert, attól függően, hogy a kamera a játékban. Ha megnézzük AnimSet szerkesztő fegyverhez, akkor veszi észre, hogy eltolódott az oldalon. Ez nagy valószínűséggel előre elfogultság egy megfelelő elhelyezése a fegyvert.

típusú fegyvert a kamera az első személy. (First Person szempontból)

Class UDKWeapon egy SetPosition funkciót. Úgy hívják, ha ábrázoljuk minden ezt követő keretben. Alapértelmezésben nem csinál semmit, de átírható úgy, hogy helyezzük a fegyver modell a megfelelő helyre, a kép arról, hogy az ugyanazt a funkciót, csak UTPawn. Kissé nyers megoldás, de teszi a dolgát.


Ha olvasta a sínek a kamera, meg lehet érteni, amit én itt sdelal.Po valamilyen okból kéri SetHidden (hamis) és SetBase szükség. Ez történik, ennek következtében.

típusú fegyvert, hogy a kamerát egy harmadik fél. (harmadik személy szemszögéből)

De ez sokkal könnyebb. És ez nem igényel tudást térbeli geometria. ) Mindössze arra van szükség, hogy horog fegyver modell a megfelelő aljzatba.
Ehhez meg kell használni a függvényt a AttacWeaponTo UDKWeapon. akik csatlakoztak SkeletalMeshComponent a megfelelő aljzatba. De a tény az, hogy alapértelmezés szerint ez a funkció nem nevezett (valószínűleg azért, mert nem tudja, hogy hová helyezi a fegyver). Egy gyors ellenőrzés az osztály UTWeapon megmutatta nekünk, hogy mindezt el kell végezni a TimeWeaponEquipping. hogy általánosságban, akkor van értelme. Átírni ezeket a funkciókat:


Tedd egyszerű igazság. És itt van az eredmény törekvéseink:

Mi azonban csak akkor csatlakozott fegyverek a játékos, nem nyúltunk bármelyik beállítás, fegyverek (mint például a helyét a fegyverek), ami oda vezethet, hogy bizonyos problémák, mint például egy lövedék lövés. Ez azt jelenti, hogy meg kell tenni valamit SetPosition () függvényt.

Kapcsolódó cikkek