7. diel - Unity (C #) Android: Generovanie Stalag
V minulej lekcii, Unity (C #) Android: Pohyb, grafika, particles , sme sa zaoberali hráčom. Dnešné tutoriál sa zaoberá mapou, jej grafikou a generovaním.
Video
Generovanie mapy
Pridávam skript, ktorý je použitý vo videu, ak sa vám ho nechce opisovať Je to skript pre generovanie levelu. Zatiaľ je to finálna verzia. Oproti predchádzajúcemu dielu má hneď niekoľko úprav.
using UnityEngine; using System.Collections; public class StartScript : MonoBehaviour { public GameObject[] stalagPrefabs; public float distance = 10; public float offset = 10; public int count = 2; public float minHeight; public float maxHeight; public float minWidth; public float maxWidth; public Vector3 lastPos; void GenerateSet() { for (int i = 0; i < count; i++) { Vector2 pos = new Vector2(); pos.x = lastPos.x + (2*distance) + offset + i * distance; int r = Random.Range(0, 2); int rotateIndicator = 1; if (r == 0) { pos.y = 4.5f; } else { pos.y = -4.5f; rotateIndicator = -1; } GenerateStalag(pos, rotateIndicator); } } // Use this for initialization void Start () { lastPos = transform.position; //GenerateSet(); } void GenerateStalag(Vector2 p, int rotateInd) { GameObject g = Instantiate(stalagPrefabs[Random.Range(0, stalagPrefabs.Length)], p, Quaternion.identity) as GameObject; Vector3 theScale = g.transform.localScale; theScale.y = Random.Range(minHeight, maxHeight) * rotateInd; theScale.x = Random.Range(minWidth, maxWidth); g.transform.localScale = theScale; Bounds b = g.GetComponent<SpriteRenderer>().bounds; p.y -= b.size.y / 2 * rotateInd; g.transform.position = p; } void OnTriggerEnter2D(Collider2D col) { if(col.CompareTag("Player")) { GenerateSet(); lastPos = transform.position; lastPos.x += count * distance; transform.position = lastPos; } } }
Ako hra vyzerá teraz?
Problémy?
Ak máte nejaké otázky ohľadom nastavovania, neváhajte sa opýtať v komentároch, alebo mi napísať do správ.
V budúcej lekcii, Unity (C #) Android: Generovanie Stalag 2 , opravíme tvorenia mapy.