Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Platformer játék Pálya generálás. Új projekt Csináljunk új 2D projektet Neve legyen Platformer Kép asseteket töltsük le, és importáljuk a projektbe Majd.

Hasonló előadás


Az előadások a következő témára: "Platformer játék Pálya generálás. Új projekt Csináljunk új 2D projektet Neve legyen Platformer Kép asseteket töltsük le, és importáljuk a projektbe Majd."— Előadás másolata:

1 Platformer játék Pálya generálás

2 Új projekt Csináljunk új 2D projektet Neve legyen Platformer Kép asseteket töltsük le, és importáljuk a projektbe Majd lehet saját asseteket is használni

3

4 Assetek Problémák: – Nem egységesek – Felbontásban nincsenek összehabgolva – Egyik kicsi, másik nagy Feladat: – Találjuk meg a kényelmes player méretet – Jól jön itt a kamera nézet esetleg állítsuk a méretét 10- re, azzal könnyebb számolni – Állítsuk be többi asset példány méretét ennek megfelelően

5 Pályaelemek Játékos Szörny (Vigyázz harap!!!) Érme (nyammmm) Talaj Emelet Mozdítható doboz Nem mozdítható fal

6 Végső méretek

7 Próbaképpen berendezhetünk egy jelenetet

8 Jegyezzük meg: Milyen magasra kerüljenek: – Talaj – Szörny – Érme – Emelet – Szörny/érme a második szinten, harmadik szinten Milyen távol vannak egymástól a talaj/emeletek – Ezt jó lenne kerek értéken tartani (nálam pl 10)

9 Prefabok Prefab kellene (x mentén a 0-ban legyenek, amikor a prefabot készítjük belőlük, a magasság elmentődik a prefabba): – Talajról – Első emeletről – Második emeletről (ez nekünk könnyebség) – Érméről a talajon/első emeleten/második emeleten – Dobozról ugyanúgy a három szinten (kissé emeljük a szint fölé, majd a fizika miatt lehet fontos) – Szörnyről ugyanúgy a három szinten

10

11 Pályagenerálás Kitörölhetjük a jelenet tartalmát, a prefabok volt a lényeg (a player akár maradhat, a kamerát ne töröljük ki) Adjunk hozzá egy empty object-et, nevezzük el LevelGenerator-nak Adjunk az objektumhoz egy szkriptet: LevelGenerator.cs

12 Példányosítás LevelGenerator szkrip: public class LevelGenerator : MonoBehaviour { public Transform groundPrefab; void Start () { Transform newGroundElement = Instantiate (groundPrefab); } Kössük be a ground prefab-ot a LevelGenerator megfelelő bemenetére (következő dián nyíl jelzi)

13 Példányosítás

14 Objektum lerakása valamilyen valószínűséggel public class LevelGenerator : MonoBehaviour { public Transform groundPrefab; void Start () { int levelSize = 50; // 50 ground element wide float groundProb = 0.5f; for (int i = 0; i < levelSize; ++i) { Vector3 offset = new Vector3(i*10,0,0); float rand = Random.value; if(rand < groundProb) { Transform newGroundElement = Instantiate (groundPrefab); newGroundElement.Translate(offset); }

15 Futtatás

16 Egyenletes random public class Halton { float inv_base; float value; public Halton(int _base){inv_base = 1.0f / _base; value = 0.0f;} public float Next(){ float r = 1.0f - value - 0.0000000001f; if (inv_base < r) value += inv_base; else { float h = inv_base, hh; do { hh = h; h *= inv_base; } while ( h >= r ); value += hh + h - 1.0f; } return value; } public class LevelGenerator : MonoBehaviour {

17 Egyenletes random public class LevelGenerator : MonoBehaviour { public Transform groundPrefab; void Start () { int levelSize = 50; // 50 ground element wide float groundProb = 0.5f; Halton h1 = new Halton(2); for (int i = 0; i < levelSize; ++i) { Vector3 offset = new Vector3(i*10,0,0); float rand = h1.Next(); Debug.Log("rand: " + rand); if(rand < groundProb)

18 Egyenletes random Álljunk vissza a Random osztályra…

19 Random számok Nehéz terület sok matekkal Mire figyeljünk? – Legyen „hihető” a játékosnak: nem mindig a teljesen véletlenszerű a jó – Legyen gyors – Ha online kaszinójátékot írunk, ne legyen kiszámítható Valódi random: valamilyen külső forrásból – Atombomlás, atmoszferikus zaj, egérmozgás… Pszeudo-random – „Mag” értékekből (seed) számolt, ismétlődő sorozat

20 Feladatok Mindent tudunk, amit tudni kell !! 1.Találjunk ki egy szabályrendszert, hogy hogyan kell felépíteni a pályát – Mikor kell talajt lerakni – Mikor rakhatunk le 1./2. emeletet – Mikor rakhatunk le szörnyeket/érmét/dobozokat 2.Programozzuk le a szabályrendszerünket a LevelGenerator-ba. Használjuk a prefabokat!

21 Prefabok utólagos változtatása A prefabokat később is változtathatjuk Hozzáadhatunk pl. új komponenseket Pl. adjunk hozzá a jelenethez egy érmét (a prefabot húzzuk rá a jelenetre) A coin prefabhoz vegyünk fel egy új szkriptet: CoinAnim néven A jelenetben lévő érméhez is létrejön ez a szkript (szkript forrása a következő dián) A többi érme prefabra is egyszerűen rá lehet húzni ezt az új szkript asset-et (asset nézetből az inspector nézetbe)

22 public class CoinAnim : MonoBehaviour { Vector3 center; public float moveSpeed = 10.0f; public float moveDist = 0.5f; public float rotateSpeed = 360.0f; void Start () { center = transform.position; } void Update () { float t = Time.time; transform.position = center + moveDist * Mathf.Sin(t * moveSpeed) * Vector3.up; transform.eulerAngles = new Vector3(0,rotateSpeed*t,0); }

23 Vége


Letölteni ppt "Platformer játék Pálya generálás. Új projekt Csináljunk új 2D projektet Neve legyen Platformer Kép asseteket töltsük le, és importáljuk a projektbe Majd."

Hasonló előadás


Google Hirdetések