Lekce 4 - Unity (C#) Android: Generování stalagů 2
V minulé lekci, Unity (C#) Android: Generování stalagů, jsme se zabývali tvorbou mapy. Dnešní tutoriál se zabývá opravou a úpravou mapy a jejím generováním.
Video
Generování mapy
Přidávám skript, který je použit ve videu, pokud se vám ho nechce opisovat Je to skript pro generování levelu. Prozatím je to finální verze. Oproti předchozímu dílu má hned několik ú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; } } }
Jak hra vypadá teď?
Problémy?
Pokud máte nějaké otázky ohledně nastavování, neváhejte se zeptat v komentářích, nebo mi napsat do zpráv.
Příští lekce, Unity (C#) Android: GUI - menu 1, se zabývá vytvářením menu.