Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

16. díl - Unity (C#) Android: Pauza

C# .NET Unity 3D Unity (C#) Android: Pauza

ONEbit hosting 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.

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.
Aktivity (3)

 

 

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
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  +3 10.12.2014 13:02
Hlavou teď neprorazíš, ale stojí za to to zkoušet :)
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  +1 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.