Předvánoční slevová akce PHP týden
Pouze tento týden sleva až 80 % na PHP e-learning!
Využij předvánočních slev a získej od nás 20 % bodů zdarma! Více zde

Lekce 17 - Unity (C#) Android: Pauza

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci, Unity (C#) Android: Obarvení draka podle zdraví, jsem se zabýval výměnou hráče jako koule za animovaného draka.

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

V dnešním tutoriál přidáme možnost hru zapauzovat.

Video

Úprava PlayerMoveScriptu

using UnityEngine;
using System.Collections;

public class PlayerMoveScript : MonoBehaviour {

    float flapAmount = 10;
    public float speed = 150;

    bool android;

    bool started = false;

    private bool paused = false;
    private Quaternion pausedRotation;

    public GUIText pauseIndicator;

    Animator anim;

    private bool didFlap = false;

    // Use this for initialization
    void Start()
    {
        anim = GetComponent<Animator>();

        if (Application.platform == RuntimePlatform.Android)
            android = true;
        else
            android = false;
    }



    // Update is called once per frame
    void Update ()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            paused = !paused;
            if (paused)
            {
                Time.timeScale = 0;
                pauseIndicator.enabled = true;
                pausedRotation = transform.rotation;
            }
            else
            {
                Time.timeScale = 1;
                pauseIndicator.enabled = 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))
            {
                vel = Flap(vel);
            }
        }
        else
        {
            if (Input.touches.Length > 0)
            {
                vel = Flap(vel);
            }
        }

        vel.x = speed * Time.deltaTime;

        rigidbody2D.velocity = vel;


        RotateMe(vel.y);
    }

    void StartGame()
    {
        started = true;
        rigidbody2D.gravityScale = 2.5f;

        Vector3 vel = rigidbody2D.velocity;
        vel = Flap(vel);

        rigidbody2D.velocity = vel;
    }

    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;
    }

}

Jak hra vypadá teď?

Hra pro Android v Unity 3D

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.


 

 

Článek pro vás napsal vratislavino
Avatar
Jak se ti líbí článek?
3 hlasů
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.
Předchozí článek
Unity (C#) Android: Obarvení draka podle zdraví
Všechny články v sekci
Tvorba arkády pro Android v Unity
Miniatura
Následující článek
Unity (C#) Android: Nové UI
Aktivity (4)

 

 

Komentáře

Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:10.12.2014 11:30

Ty jsi to teda slušně rozjel :)

Odpovědět
10.12.2014 11:30
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
vratislavino
Redaktor
Avatar
Odpovídá na David Čápka
vratislavino:10.12.2014 13:02

Přeci když už jsem začal, dokončím to :)

Odpovědět
10.12.2014 13:02
Hlavou teď neprorazíš, ale stojí za to to zkoušet :)
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
tribal.cz
Redaktor
Avatar
tribal.cz:25.12.2014 17:31

Vždy jsem se zabýval více tvořením her než webovek a programů, dlouho jsem odkládal hry pro android (nevím proč) ale přišlo mi to tak nějak těžší o mnoho než hry pro win/linux. Nyní vidím že ne. Ale k věci mám dotaz hodláš některé assety uvolnit? sice sem u prvního dílu a jen jsem si projel tvé tutorialy na rychlo bez videa a rapidně si pozmenil grafiku

 
Odpovědět
25.12.2014 17:31
Avatar
vratislavino
Redaktor
Avatar
Odpovídá na tribal.cz
vratislavino:25.12.2014 18:20

Ahoj, původně jsem to v plánu neměl, ale budiž tedy :) celá moje Graphics složka je k dispozici zde: https://drive.google.com/…QmNKVlk/view?…

Odpovědět
25.12.2014 18:20
Hlavou teď neprorazíš, ale stojí za to to zkoušet :)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.