Ugrás a fő tartalomra

Mi a vektor Viktor?

  Újabb hosszú idő után eljött az idő, hogy újabb "tanulságos" blog bejegyzést írjak játék fejlesztés téma körében. Ahogy talán a címből kiderül vektorokról fogok mesélni, hogy micsoda és hogy mire lehet használni őket.
  Gondolom hozzám hasonlóan sokan vannak úgy, hogy amit az ember az iskola alatt tanul annak a nagy részét soha nem fogja tudni használni. Ez alól kivétel a vektor,  ha az ember játékfejlesztéssel foglalkozik. Játékfejlesztés egyik szépsége, hogy nagyon sok mindenre megtanít és megmutatja, hogy mire lehet a megtanult dolgokat használni.

Mi a vektor?
  Elég a szócséplésből és inkább térjünk rá a lényegre. A vektort gyakorlatilag 2 dolog alkotja: irány és mennyiség. Vektort gyakorlatban nyíllal szoktuk jelölni, ami egy kezdőpontból egy végpontba mutat és a menyisége pedig a nyílnak a hossza.

Na de mire jó ez a mi esetünkben?
  A játékok általánosságban akkor izgalmasak, hogyha mozognak benne a dolgok és ahogy fizikából megtanultuk, ahol mozgás van ott vektornak is kell lennie. Tehát a vektorok tökéletesek mozgások leírására.

Hogyan programozzuk ezt le?
  Legegyszerűbb dolgunk a a mennyiséggel van mivel ez egy egyszerű szám, amit el kell tárolnunk.
Mozgás esetében a mennyiség lehet például a sebesség.
Irány sem sokkal nehezebb, mivel ehhez érdemes egy egyszerű irány vektort használni, aminek a hossza 1 és a kezdő pontja a koordináta rendszer origója vagyis (0,0), ami miatt csak a végpont koordinátáit(x,y) kell eltárolnunk.

Irány vektor


WTF vektor a vektorban?
  Tudom tudom, de így lehet a legegyszerűbben elmagyarázni, hogy hogyan is kell irányt megadni.
Gyakorlatilag ez nem más mint egy iránytű, ami megmutatja, hogy egy adott játék elem milyen irányba mozog.

Aha, de hogy használom őket együtt?
  Mozgások esetében a mennyiség a sebesség lesz és az irány pedig a test mozgási iránya. Ebben az esetben csak annyi a dolgunk, hogy összeszorozzuk őket. Így pedig megkapjuk a vektort, ami gyakorlatilag elmondja, hogy a test milyen sebsebéggel mozog x és y irányban.

Triviális esetek:
Sebsebég: 300
Felfelé alkarunk haladni, akkor irányvektor: (x:0,y:1). Ezeket összeszorozva(x:0*300,y:1*300), ezt a vektort kapjuk: (x:0,y:300)
Gondolom innen már sejhető, hogy lefelé a vektor: (x:0,y:-300), balra a vektor: (x:-300,y:0) és jobbra a vektor: (x:300,y:0).

Nem triviális esetek:
  Szerintem az átlós mozgások nem triviálisak, mivel több fajta módon is be lehet állítani az irány vektort:
1. Kiszámoljuk az irányvektor végpontját az x tengely és az irányvektor közötti szög alapján. Például: cos(30) = 0.866, sin(30) = 0.5, tehát az irány vektor: (x:0.866,y:0.5)
2. Elforgatunk egy adott irányvektor, hogy az átlósan álljon.
3. Összeadunk két merőleges vektort és a keletkező vektort lezsugorítjuk, hogy a hossza 1 legyen.

Összegezve:
  Lényegében a vektorok a játékfejlesztésben tökéletesek a mozgások leírására és ezért alapvető elemei egy fizikai motornak. Vektorok egyszerűek mivel csak menyiségből és irányból állnak. Használatuk is igen egyszerű, mivel minden nyelven találhatunk vektor könyvtárakat.
  Nekem szerencsém volt mivel StageXL-ben van egy vektor osztály, amivel megtudtam valósítani a vektor irány részét és így már csak a mennyiség része maradt, ami meg triviális feladat.

Kiegészítés:
  Mozgások esetében a sebességet is ábrázolhatjuk vektorral ha a sebességet felbontjuk horizontális és vertikális sebességre. Azért jó, mert ebben az esetben is két értéket kell eltárolni, mint az irányvektor esetében. Nem is beszélve a tényleges vektor megadásához csak össze kell szoroznunk a sebesség - és irány vektort.(Ami vektorok esetében egyszerű dolog)

Egy kis példa:
  DartRocket esetében vektorokat használtam a mozgási és irányrendszerek megoldásához.
DirectionSystem: Irányokkal való munkát segíti és definiál néhány triviális irányt.
MovementSystem: Mozgások leírását és velük való munkát segíti. 

Bónusz: 

Megjegyzések

Népszerű bejegyzések ezen a blogon

Python kezdőknek

Itt a nyár és mivel lehetne ezt a legjobban megünnepelni, mint egy kígyóról elnevezett programozási nyelv bemutatásával. Következőkben tehát a Python programozási nyelvről lesz szó és annak lehetséges alkalmazásairól.

Miért tartsunk otthon Python-t? Python pályafutása 1991-ben kezdődött el egy Guido van Rossum nevű fejlesztőnek hála, aki egy olyan általános programozási nyelvet akart készíteni, amit nagyon könnyen el lehet sajátítani és használni. Az elmúlt év tizedek alatt a Python nyelv az egyik legjobb és legnépszerűbb általános programozási nyelvé nőtte ki magát, amit bizonyít, hogy számos operációs rendszeren(linux, mac os) alapból megtalálható a nyelv. De nézzük meg, hogy mitől ilyen népszerű: Egyszerűség: A nyelvnek az egyik legnagyobb előnye, hogy nagyon egyszerű és ezért például nagyon sok egyetemen a kezdő programozó legényeket Python segítségével vezetik be a programozás világába.Dinamikus: Mint minden dinamikus nyelvnek úgy Python-nak is van egy beépített REPL-je, ami nagyo…

HTML5 játék fejlesztés alapjai

Ahogy a cím is sugallja a HTML5 játék fejlesztés alapjairól lesz szó ,hogy mi is kell hozzá.
Az én tudásom ebben a témában még elég kicsi ,de egyre növekszik ,talán egyszer majd én is össze fogok szedni annyi tapasztalatot a témából ,hogy akár még könyvet is írhatnék róla. Na persze egy izgalmas könyvet. :D

Na akkor vágjunk is bele!
    Első kérdés ,hogy mi a legalapvetőbb dolog ,amit ehhez meg kell tanulni? Persze sokan mondhatják ,hogy html , javascript ,css ismerete ,ebben igazat is adnék ,de nekünk még van ennél sokkal alapibb tudás ,ami a magyar programozókra főként igaz ez pedig az angol tudás.
Ezt nagyon sokszor tapasztalja az ember ,hogyha nem elég jó az angolja ,akkor egyetlen mondat is megtudja akasztani ,ahol az író nagyon szakmai akart lenni.
Főleg emiatt szeretem azokat az írókat ,akik semmi köntörfalazás nélkül belevágnak a lecsóban és simán és egyszerűen elmagyarázzák a dolgokat.

   Ha az első szint megvan akkor jöhet a HTML tanulása ,ami elég gyorsan letudható ,hiszen c…

Javascript kezdő lépések

Ma kis bejegyzésem arról fog szólni ,hogy mit érdemes kezdő lépésenként megtanulni ,illetve ,hogyan érdemes haladni Javascripttel és néhány érdekesség is lesz node.js-sel kapcsolatban.

Tanulás
   Szerencsére olyan világba élünk már ,ahol a web és webes technológiák nagyon gyorsan fejlődnek és ezért ezeknek a tanulása is egy fajta fejlődésen ment keresztül. Már nem könyvből kell tanulni ,hanem vannak olyan oldalak ahol interaktív módon lehet egy nyelvet megtanulni ,ami tökéletes a tanulás szempontjából. Előző cikkemben raktam be anyagokat ahhoz ,hogy mit érdemes elolvasni ,ha a tanuló inkább olvasós fajta és volt bent 2 interaktív.  Én például codecademy segítségével tanultam meg Jquery-t használni. Javascripthez Eloquent és codeacademy-t használtam.

   Mivel a Javascript elég megengedő ezért nagyon sok fajta stílusban kódolnak hozzá és ezek a stílusok  néha teljesen eltérőék. Szóval aki tanult már Java ,c vagy c++-t annak is lehet újdonság ,mivel ezeknél a nyelveknél nagyon szépen megv…