19. diel - Unity (C #) Android: Zafarbenie draka podľa zdravie
V minulej lekcii, Unity (C #) Android - Prispôsobenie hry rôznym rozlíšením , sme prispôsobili naše UI pre všetky rozlíšenia a pozreli sa na iné dostupné UI prvky.
V minulej lekcii, Unity (C #) Android - Prispôsobenie hry rôznym rozlíšením , som sa zaoberal výmenou hráčov ako guľa za animovaného draka.
V dnešnom tutoriál upravíme opäť hráča. Drak sa bude zafarbovať podľa svojho aktuálneho zdravia.
Video
Úprava HealthScript
V skripte bola zmenená návratová hodnota z void na int a prepísané na verejnú (public), aby mohla do PlayerCollisionScriptu vracať aktuálnej život.
using UnityEngine; using System.Collections; public class HealthScript : MonoBehaviour { int health = 100; float initSize; bool dead = false; // Use this for initialization void Start () { initSize = transform.localScale.x; health = 100; RefreshScore(); } public int Hit(int damage) { if (dead) return 0; health -= damage; RefreshScore(); if (health <= 0) Die(); return health; } void Die() { dead = true; } void OnGUI() { if(dead) { if(GUILayout.Button("Restart")) { Application.LoadLevel(Application.loadedLevel); } } } void RefreshScore() { //transform.GetChild(0).guiText.text = "Health: " + health; Vector3 scale = transform.localScale; scale.x = initSize / 100 * health; transform.localScale = scale; } }
Úprava PlayerCollisionScript
V skripte bola pridaná funkcia na tónovanie draka. Obarvování je založené na percentuálnom miešanie dvoch farieb (jej zložiek).
using UnityEngine; using System.Collections; public class PlayerCollisionScript : MonoBehaviour { public HealthScript healthScript; public Color fullColor; public Color deadColor; SpriteRenderer sr; void Start() { sr = GetComponent<SpriteRenderer>(); } void OnCollisionEnter2D(Collision2D col) { if (col.collider.CompareTag("Stalag")) { GameObject stalag = col.collider.gameObject; stalag.SendMessage("React"); } int currHealth = healthScript.Hit(20); Color c = new Color(); float fr = fullColor.r - deadColor.r; fr /= 100; c.r = deadColor.r + fr * currHealth; float fg = deadColor.g - fullColor.g; fg /= 100; c.g = fullColor.g + fg * (100 - currHealth); float fb = deadColor.b - fullColor.b; fb /= 100; c.b = fullColor.b + fb * (100 - currHealth); c.a = 1; sr.color = c; } }
Ako hra vyzerá teraz?
Problémy?
Ak máte nejaké otázky, neváhajte sa opýtať v komentároch, alebo mi napísať do správ.
V budúcej lekcii, Unity (C #) Android - Pľuvanie ohňa , pridáme možnosť hru zapauzovať.
V budúcej lekcii, Unity (C #) Android - Pľuvanie ohňa , pridáme pľuvanie ohňa a možnosť brániť sa hráči pred stalagmity.