Slevový týden - Květen Office week
Pouze tento týden sleva až 80 % na e-learning týkající se MS Office
30 % bodů zdarma na online výuku díky naší Slevové akci!

Lekce 10 - Unity (C#) Android: Start, Skóre, PlayerPrefs

V minulé lekci, Unity (C#) Android: Přestavba, nová grafika, vrstvy, jsem se zabýval dalšími resty, konkrétně novými kolizemi a přidáním nové grafiky.

V dnešním dílu uvidíte, jak hráče na začátku zastavit tak, aby vyčkával na váš pokyn k začátku hry. Další a mnohem podstatnější částí je, jak si udělat počítadlo skóre, zobrazit si skóre a dokonce jak si ho na konci hry uložit.

Video

Úprava Player Move Scriptu

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

Do tohoto skriptu přibylo vyčkání na začátek hry

using UnityEngine;
using System.Collections;

public class PlayerMoveScript : MonoBehaviour {

    float flapAmount = 10;
    public float speed = 150;

    bool android;

    bool started = false;

    // Use this for initialization
    void Start()
    {
        if (Application.platform == RuntimePlatform.Android)
            android = true;
        else
            android = false;
    }

    // Update is called once per frame
    void Update () {

        if (!started)
        {
            if (!android)
            {
                if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space))
                {
                    StartGame();
                }
            }
            else
            {
                if (Input.touches.Length > 0)
                {
                    StartGame();
                }
            }


            return;
        }

        if(Input.GetKeyDown(KeyCode.Escape))
        {
            Application.LoadLevel(0);
        }



        Vector3 vel = rigidbody2D.velocity;

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

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

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

        rigidbody2D.velocity = vel;
    }

    Vector3 Flap(Vector3 v)
    {
        v.y = flapAmount;
        return v;
    }

}

Highscore script

using UnityEngine;
using System.Collections;

public class HighScoreScript : MonoBehaviour {

    // Use this for initialization
    void Start () {
        int highscore = PlayerPrefs.GetInt("highscore", 0);
        guiText.text = "Highscore: " + highscore;
    }
}

Scorer script

Skript, který vlastní každý collider, který by měl přidávat skóre

using UnityEngine;
using System.Collections;

public class ScorerScript : MonoBehaviour {

    void OnTriggerEnter2D(Collider2D col)
    {
        if(col.CompareTag("Player"))
        {
            print("Adding score");
            ScoreScript.AddScore();
        }
    }

}

Score script

Skript, který je přiřazen objektu, který má guiText element, který nám vypisuje aktuální skóre

using UnityEngine;
using System.Collections;

public class ScoreScript : MonoBehaviour {

    static int score = 0;
    static bool changed = false;

    // Use this for initialization
    void Start () {
        score = 0;
    }

    // Update is called once per frame
    void Update () {

        if(changed)
        {
            changed = false;
            guiText.text = "Score: " + score;
        }

    }

    void OnDestroy()
    {
        int highscore = PlayerPrefs.GetInt("highscore", 0);

        if(score > highscore)
            PlayerPrefs.SetInt("highscore", score);
    }

    public static void AddScore()
    {
        score++;
        changed = true;
    }
}

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: Oprava sekání, naklánění, se budeme věnovat naklánění hráče při padání a vyřešíme jeho sekavost.


 

 

Článek pro vás napsal vratislavino
Avatar
Jak se ti líbí článek?
4 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: Přestavba, nová grafika, vrstvy
Všechny články v sekci
Tvorba 2D arkády pro Android v Unity
Miniatura
Následující článek
Unity (C#) Android: Oprava sekání, naklánění
Aktivity (5)

 

 

Komentáře

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.

Zatím nikdo nevložil komentář - buď první!