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

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

Tento videotutoriál navazuje na předchozí díl o programování her pro Android v Unity, kde jsem se zabýval výměnou hráče jako koule za animovaného draka.

V dnešním dílu 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.


 

  Aktivity (1)

Článek pro vás napsal vratislavino
Avatar
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.

Jak se ti líbí článek?
Celkem (3 hlasů) :
55555


 



 

 

Komentáře

Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

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:

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:

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:

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.