3D-s technológiák a játékfejlesztésben Saját játék osztály

Hasonló dokumentumok
3D-s technológiák a játékfejlesztésben UDK bevezetés

JAVA SE/ME tanfolyam tematika

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Java Programozás 11. Ea: MVC modell

Algoritmusok és adatszerkezetek II.

Szoftvertechnológia alapjai Java előadások

Informatika terméktervezőknek

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

C# osztályok. Krizsán Zoltán

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

Java és web programozás

Tervminták a valósidejű gyakorlatban

Az új be- és kimenet könyvtár

Kifejezések. Kozsik Tamás. December 11, 2016

BME MOGI Gépészeti informatika 7.

Concurrency in Swing

117. AA Megoldó Alfréd AA 117.

ISA szimulátor objektum-orientált modell (C++)

Objektumorientált programozás C# nyelven

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Programozási nyelvek JAVA EA+GY 1. gyakolat

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Fordított és szkript nyelvek összehasonlító elemzése. Sergyán Szabolcs

16F628A megszakítás kezelése

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Feldspar: Nyelv digitális jelfeldolgozáshoz

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET Core) Cserép Máté

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Internet technológiák

Programozás I. Első ZH segédlet

A C# programozási nyelv alapjai

JavaScript bűvésztrükkök, avagy PDF olvasó és böngésző hackelés

Tervminták II. (Híd, Bejáró, Gyártófüggvény) Halmaz és bejárása Osztály-sablonok

Deep Learning a gyakorlatban Python és LUA alapon Felhasználói viselkedés modellezés

ködös határ (félreértés, hiba)

Grafikus felhasználói felületek. Abstract Window Toolkit, a java.awt és java.awt.event csomagok

6. fejezet: Ciklusok

Stack Vezérlés szerkezet Adat 2.

VHDL szimuláció. Tervezés. Labor II. Dr. Hidvégi Timót

BME MOGI Gépészeti informatika 4.

Imperatív programozás

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Forráskód formázási szabályok

ZH mintapélda. Feladat. Felület

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Programozás II. 2. Dr. Iványi Péter

Algoritmusok és adatszerkezetek II.

C# gyorstalpaló. Készítette: Major Péter

C# feladatok gyűjteménye

OOP: Java 8.Gy: Abstract osztályok, interfészek

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

JAVA PROGRAMOZÁS 3.ELŐADÁS

Ködös határ (Félreértés, hiba)

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

1. A feladatról. 2. Az áramkör leírása. Mechatronika, Optika és Gépészeti Informatika Tanszék D528. Léptetőmotor vezérlése

Véletlen sorozatok ellenőrzésének módszerei. dolgozat

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

C++ programozási nyelv

Megoldott feladatok. Informatika

Objektumorientált programozás C# nyelven III.

A Számítógépek hardver elemei

Programozási nyelvek Java

#include <iostream> using namespace std; // struct macska is lehetne class macska { public: int kor; int suly; }; void main() { macska cirmi;

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Programozási nyelvek Java

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

A BECKHOFF típusú PLC használata.

A jobboldalon a pnlright egy Stacked Widget Állítsuk be az első lapot és nevezzük el pnldraw-ra:

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Kikapcsoláskor mindig a Commodore számítógépet vagy a floppy meghajtót kapcsolja ki először.

Szálkezelés Rajzolás képernyőre Bevitel kezelése - Érintő képernyő - Billentyűzet

Fizikai alapú közelítő dinamikus modellek

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

PHP5 Új generáció (2. rész)

Tuesday, March 6, 12. Hasító táblázatok

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Java programozási nyelv 5. rész Osztályok III.

Példa 30 14, 22 55,

A WEB programozása - JSP1 dr.gál Tibor őszi félév

A PHP nyelv alapjai. Web-Sky Consulting Kft Tóth Imre 2009

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Model View Controller alapú alkalmazásfejlesztés

Elemi Alkalmazások Fejlesztése Beadandó Feladat Juhász Ádám

Elemi alkalmazások fejlesztése III.

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér

Powershell 2. gyakorlat

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

I. 288.: Utcai WiFi térkép

Átírás:

3D-s technológiák a játékfejlesztésben Saját játék osztály

GameInfo class Összefoglalja a játék szabályait, pontokat, valamint, hogy milyen szereplők vehetnek részt a játékban Nagyrészt csak interfészt biztosít, amelyek megvalósítását a gyerek osztályokra (UTGame, UTDeathmach, stb.) bízzuk Itt határozhatjuk meg, hogy milyen játékos vezérlő osztály vezérelje a játékost A rendszer a pálya betöltésekor példányosítja

Saját játék osztály class AwesomeGame extends UTDeathMatch; defaultproperties PlayerControllerClass= Csak az olvashatóság miatt tördeltem, valójában ide tilos sortörést tenni! class'awesomegame.awesomeplayercontroller' Az AwesomeGame könyvtárban hozzuk létre az AwesomePlayerController osztályt!

Saját játékos osztály class AwesomePlayerController extends UTPlayerController; var vector PlayerViewOffset; defaultproperties PlayerViewOffset=(X=-64, Y=0, Z=700) simulated event GetPlayerViewPoint(out vector out_location, out Rotator out_rotation) super.getplayerviewpoint(out_location, out_rotation); if (Pawn!= none) A kamerát ennyivel toljuk el a játékos karakteréhez képest out_location = Pawn.Location + PlayerViewOffset; out_rotation = rotator(pawn.location - out_location);

Saját játékos osztály Nem látható a karakter Látható a célkereszt, ami most zavaró Túl nagy a fegyver Alap esetben a fegyver mindig arra lő, amerre a kamera néz

Saját játékos osztály function Rotator GetAdjustedAimFor(Weapon W, vector StartFireLoc) return Pawn.Rotation; Arra lőjünk, amerre a karakter néz simulated event GetPlayerViewPoint(out vector out_location, out Rotator out_rotation) super.getplayerviewpoint(out_location, out_rotation); if (Pawn!= none) Pawn.Mesh.SetOwnerNoSee(false); Legyen látható a karakter out_location = Pawn.Location + PlayerViewOffset; out_rotation = rotator(pawn.location - out_location);

Saját játékos osztály Látható a célkereszt, ami még zavaró Túl nagy a fegyver

Saját játékos osztály simulated event GetPlayerViewPoint(out vector out_location, out Rotator out_rotation) super.getplayerviewpoint(out_location, out_rotation); if (Pawn!= none) Pawn.Mesh.SetOwnerNoSee(false); if (Pawn.Weapon!= none) Pawn.Weapon.SetHidden(true); out_location = Pawn.Location + PlayerViewOffset; out_rotation = rotator(pawn.location - out_location); simulated function PostBeginPlay() super.postbeginplay(); bnocrosshair = true; Elrejtjük a célkeresztet Elrejtjük a fegyvert

Saját játékos osztály

Saját játékos osztály Pakoljunk le egy szereplőt minden lövés kezdetekor: exec function StartFire(optional byte FireModeNum) super.startfire(firemodenum); MyAwesomeActor= spawn(class'awesomeactor',,,pawn.location);

Saját játékos osztály Minden lövés kezdetekor rejtsük el a karaktert 2 másodpercig: function MakeVisible() if (Pawn!= none) Pawn.SetHidden(false); exec function StartFire(optional byte FireModeNum) super.startfire(firemodenum); if (Pawn!= none) Pawn.SetHidden(true); SetTimer(2, false, 'MakeVisible');

Platform játék Hozzunk létre egy megfelelő pályát Oldjuk meg, hogy a játékos karakterét mindig oldalról lássuk: simulated event GetPlayerViewPoint(out vector out_location, out Rotator out_rotation) super.getplayerviewpoint(out_location, out_rotation); if (Pawn!= none) if (Pawn.Weapon!= none) Pawn.Weapon.SetHidden(true); Pawn.Mesh.SetOwnerNoSee(false); out_location = Pawn.Location + vect(-700, 0, 0); out_rotation.roll = 0; out_rotation.yaw = 0; out_rotation.pitch = 0;

Platform játék

Platform játék Jelenleg a játékos bármerre fordulhat, ezt ne engedjük meg: function UpdateRotation( float DeltaTime ) local Rotator DeltaRot, ViewRotation; ViewRotation = Rotation; DeltaRot.Yaw = Pawn.Rotation.Yaw; DeltaRot.Pitch = 0; ProcessViewRotation( DeltaTime, ViewRotation, DeltaRot ); SetRotation(ViewRotation);

Platform játék Korlátozzuk a játékos mozgását, csak jobbra és balra mozoghasson: state PlayerWalking function ProcessMove(float DeltaTime, vector NewAccel, edoubleclickdir DoubleClickMove, rotator DeltaRot) local Rotator temprot; if( Pawn == None ) return; Pawn.Acceleration.Y = 1 * PlayerInput.aStrafe * DeltaTime * 100 * PlayerInput.MoveForwardSpeed; Pawn.Acceleration.X = 0; Pawn.Acceleration.Z = 0; [ ]

Platform játék A játékos csak jobbra, vagy balra nézhet: temprot.pitch = Pawn.Rotation.Pitch; if(normal(pawn.acceleration) Dot Vect(0,1,0) > 0) temprot.yaw = 32768 / 2; Pawn.SetRotation(tempRot); else if(normal(pawn.acceleration) Dot Vect(0,1,0) < 0) temprot.yaw = 32768 / -2; Pawn.SetRotation(tempRot); CheckJumpOrDuck();

Platform játék A játékos nem arra lő, amerre néz Jelen van a célkereszt A lövésnél időnként fura hibák jelennek meg Hozzunk létre egy saját Pawn osztályt (ez reprezentálja a játékos karakterét) class AwesomeGame extends UTDeathMatch; defaultproperties PlayerControllerClass=class'AwesomeGame.SideScrollingController' DefaultPawnClass=class'AwesomeGame.AwesomePawn'

Platform játék class AwesomePawn extends UTPawn; simulated event BecomeViewTarget( PlayerController PC ) local UTPlayerController UTPC; Super.BecomeViewTarget(PC); if (LocalPlayer(PC.Player)!= none) UTPC = UTPlayerController(PC); if (UTPC!= None) UTPC.SetBehindView(true); SetMeshVisibility(UTPC.bBehindView); UTPC.bNoCrosshair = true; Közöljük a controllerrel, hogy külső kamera nézetet használunk

Platform játék Abba az irányba lőjön a karakter, amerre néz: simulated singular event Rotator GetBaseAimRotation() return Rotation;

Platform játék