Lekce 22 - Unity (C#) Android: Návrat do menu
V minulé lekci, Unity (C#) Android: Vylepšení plivání ohně, jsem se zabýval změnou ovládání pro plivání ohně.
Dnešní tutoriál se bude na vyžádání jednoho z diváků zabývat vytvořením tlačítek na začátku hry, aby měl po spuštění hry hráč možnost návratu do menu.
Video
Nový PlayerMoveScript
Upravený PlayerMoveScript, který přináší několik metod pro ovládání tohoto skriptu přes tlačítka z z Unity 4.6 UI.
using UnityEngine.UI; using UnityEngine; using System.Collections; public class PlayerMoveScript : MonoBehaviour { public LayerMask touchControlLayerMask; public GameObject StartGameButtonPanel; public Text countOfFireText; float flapAmount = 10; public float speed = 150; bool android; bool started = false; private bool paused = false; private Quaternion pausedRotation; public GameObject pauseIndicator; Animator anim; private bool didFlap = false; private GameObject flame; private float fireLength = 2; private float currentFlameTime = 0; private bool currentlyFlaming = false; private int countOfFires = 5; // Use this for initialization void Start() { anim = GetComponent<Animator>(); flame = transform.GetChild(0).gameObject; if (Application.platform == RuntimePlatform.Android) android = true; else android = false; } // Update is called once per frame void Update () { if (currentlyFlaming) { if (currentFlameTime <= 0) { currentFlameTime = 0; DeactivateFire(); } else { currentFlameTime -= Time.deltaTime; } } if (Input.GetKeyDown(KeyCode.Escape)) { paused = !paused; if (paused) { Time.timeScale = 0; //pauseIndicator.enabled = true; pauseIndicator.SetActive(true); pausedRotation = transform.rotation; } else { Time.timeScale = 1; //pauseIndicator.enabled = false; pauseIndicator.SetActive(false); } } if (paused) { if (!android) { if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space)) { didFlap = true; } } else { if (Input.touches.Length > 0) { didFlap = true; } } transform.rotation = pausedRotation; return; } if (!started) { /* if (!android) { if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space)) { StartGame(); } } else { if (Input.touches.Length > 0) { StartGame(); } }*/ return; } Vector3 vel = rigidbody2D.velocity; if (didFlap) { didFlap = false; vel = Flap(vel); } if (!android) { if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space)) { if(RaycastingDragon(Input.mousePosition)) ActivateFire(); vel = Flap(vel); } } else { if (Input.touches.Length > 0) { vel = Flap(vel); } } vel.x = speed * Time.deltaTime; rigidbody2D.velocity = vel; RotateMe(vel.y); } private bool RaycastingDragon(Vector3 mousePos) { Ray r = Camera.main.ScreenPointToRay(mousePos); RaycastHit2D hit = Physics2D.Raycast(r.origin, r.direction, Mathf.Infinity, touchControlLayerMask); if (hit.collider == null) { return false; } return true; } public void StartGame() { started = true; rigidbody2D.gravityScale = 2.5f; Vector3 vel = rigidbody2D.velocity; vel = Flap(vel); rigidbody2D.velocity = vel; print("Called start game 1"); StartGameButtonPanel.SetActive(false); } public void StartGame2() { started = true; rigidbody2D.gravityScale = 2.5f; Vector3 vel = rigidbody2D.velocity; vel = Flap(vel); rigidbody2D.velocity = vel; print("Called start game 2"); StartGameButtonPanel.SetActive(false); } public void RestartGame() { Application.LoadLevel(Application.loadedLevel); } public void BackToMenu() { Application.LoadLevel("menu_4"); } void RotateMe(float y) { // -20, 10 // -70, 0 // 0 -70 if(y >= 0) { transform.rotation = Quaternion.Euler(0, 0, 0); } else { float angle = Mathf.Lerp(0, -70, -y); transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 0, angle), 0.05f); } } Vector3 Flap(Vector3 v) { anim.SetTrigger("DoFlap"); v.y = flapAmount; return v; } void ActivateFire() { if (countOfFires <= 0) return; countOfFires--; countOfFireText.text = "Fire count avalible: " + countOfFires; currentlyFlaming = true; flame.SetActive(true); currentFlameTime = fireLength; } void DeactivateFire() { currentlyFlaming = false; flame.SetActive(false); } }
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: Konec hry, si ukážeme, jak hru nahrát na Google Play.