IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

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 PlayerCollisi­onScriptu 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 PlayerCollisi­onScript

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?

Tvorba 2D arkády pre Android v Unity

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.


 

Predchádzajúci článok
Unity (C #) Android - Prispôsobenie hry rôznym rozlíšením
Všetky články v sekcii
Tvorba 2D arkády pre Android v Unity
Preskočiť článok
(neodporúčame)
Unity (C #) Android - Pľuvanie ohňa
Článok pre vás napísal vratislavino
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje programování v C#, především pak ve vývojovém prostředí Unity3D. Má asi pětileté zkušenosti s programováním a momentálně pracuje na připravované hře Azulgar: Beyond The Frontiers.
Aktivity