Lekce 16 - Unity (C#) Android: Obarvení draka podle zdraví
V minulé lekci, Unity (C#) Android: Animace draka, jsem se zabýval výměnou hráče jako koule za animovaného draka.
V dnešním tutoriál upravíme opět hráče. Drak se bude obarvovat podle svého aktuálního zdraví.
Video
Úprava HealthScript
Ve skriptu byla změněna návratová hodnota z void na int a přepsána na veřejnou (public), aby mohla do PlayerCollisionScriptu vracet aktuální ž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
Ve skriptu byla přidána funkce k obarvování draka. Obarvování je založeno na procentuálním míchání dvou barev (jejích složek).
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; } }
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: Nové UI, zkusíme další způsob vytvoření menu.