Lekce 8 - Unity (C#) Android: MenuPart, Eraser, pozadí 2
V minulé lekci, Unity (C#) Android: MenuPart, Eraser, pozadí, jsem nasbíral nějaké resty, které jsou v tomto videu řešeny.
Konkrétně se jedná o ničení stalagů a následné vytváření efektu ničení, vytvoření 2 zkušebních levelů do módu arcade a přepínání mezi nimi.
Video
Skript pro ukončení hry
Tento skript reaguje na průlet hráče koncovým objektem levelu
using UnityEngine; using System.Collections; public class EndScript : MonoBehaviour { bool isEnd = false; void OnTriggerEnter2D(Collider2D col) { if(col.CompareTag("Player")) { isEnd = true; Time.timeScale = 0; } } void OnGUI() { if(isEnd) { if(GUILayout.Button("Menu")) { Time.timeScale = 1; Application.LoadLevel("menu_1"); } if (GUILayout.Button("Next level")) { Time.timeScale = 1; string currLevelId = Application.loadedLevelName; currLevelId = Application.loadedLevelName.Substring(currLevelId.Length - 1); print("Aktualni level: " + currLevelId); int currLevelInt = int.Parse(currLevelId); currLevelInt++; string newLevelName = "Level0" + currLevelInt; Application.LoadLevel(newLevelName); } if (GUILayout.Button("Restart")) { Time.timeScale = 1; Application.LoadLevel(Application.loadedLevelName); } } } }
Detekce hráčovy kolize
using UnityEngine; using System.Collections; public class PlayerCollisionScript : MonoBehaviour { void OnCollisionEnter2D(Collision2D col) { if(col.collider.CompareTag("Stalag")) { GameObject stalag = col.collider.gameObject; stalag.SendMessage("React"); } } }
Reakce stalagu na hráčovu kolizi
using UnityEngine; using System.Collections; public class StalagScript : MonoBehaviour { public GameObject parts; void React() { print("destroyed"); Destroy(Instantiate(parts, transform.position, Quaternion.identity), 2); Destroy(gameObject); } }
Jak hra vypadá teď?
Problémy?
Pokud máte nějaké otázky, neváhejte se zeptat v komentářích, nebo mi napsat do zpráv.
V příští lekci, Unity (C#) Android: Přestavba, nová grafika, vrstvy, přidáme novou grafiku a předěláme vrstvy a kolize.