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 :)

8. díl - Unity (C#) Android: MenuPart, Eraser, pozadí 2

C# .NET Unity 3D Unity (C#) Android: MenuPart, Eraser, pozadí 2

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: MenuPart, Eraser, pozadí, jsem nasbíral nějaké resty, které jsou v tomto videu řešeny. Konkrétně se jedná o ničení stalagů a následné vytváření efektu ničení, vytvoření 2 zkušebních levelů do módu arcade a přepínání mezi nimi.

Video

Skript pro ukončení hry

Tento skript reaguje na průlet hráče koncovým objektem levelu

using UnityEngine;
using System.Collections;

public class EndScript : MonoBehaviour {

    bool isEnd = false;

    void OnTriggerEnter2D(Collider2D col)
    {
        if(col.CompareTag("Player"))
        {
            isEnd = true;
            Time.timeScale = 0;
        }
    }

    void OnGUI()
    {
        if(isEnd)
        {
            if(GUILayout.Button("Menu"))
            {
                Time.timeScale = 1;
                Application.LoadLevel("menu_1");
            }

            if (GUILayout.Button("Next level"))
            {

                Time.timeScale = 1;
                string currLevelId = Application.loadedLevelName;
                currLevelId = Application.loadedLevelName.Substring(currLevelId.Length - 1);

                print("Aktualni level: " + currLevelId);

                int currLevelInt = int.Parse(currLevelId);
                currLevelInt++;

                string newLevelName = "Level0" + currLevelInt;

                Application.LoadLevel(newLevelName);

            }

            if (GUILayout.Button("Restart"))
            {

                Time.timeScale = 1;
                Application.LoadLevel(Application.loadedLevelName);
            }

        }
    }

}

Detekce hráčovy kolize

using UnityEngine;
using System.Collections;

public class PlayerCollisionScript : MonoBehaviour {

        void OnCollisionEnter2D(Collision2D col)
    {
        if(col.collider.CompareTag("Stalag"))
        {
            GameObject stalag = col.collider.gameObject;
            stalag.SendMessage("React");
        }
    }

}

Reakce stalagu na hráčovu kolizi

using UnityEngine;
using System.Collections;

public class StalagScript : MonoBehaviour {

    public GameObject parts;

    void React()
    {
        print("destroyed");

        Destroy(Instantiate(parts, transform.position, Quaternion.identity), 2);



        Destroy(gameObject);
    }

}

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: Přestavba, nová grafika, vrstvy, přidáme novou grafiku a předěláme vrstvy a kolize.


 

 

Č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
danar2004
Člen
Avatar
danar2004:3.10.2015 14:52

Ahoj, tak se prokousávám tutoriály dál a tady jsem byl dlouho zaseklý u kolize se stalagy. Particles mi emitovaly směrem od kamery a i když jsem v prefabu nastavil správnou rotaci a prefab fungoval, tak po vytvoření instance měl rotaci jinou (podle stalagu). Přišel jsem na to, že mám scénu ve 2D otočenou oproti 3D-front pohledu naopak. Nakonec jsem to vyřešil tímhle:

//        Destroy(Instantiate(parts, transform.position, Quaternion.identity), 2);
        Destroy(Instantiate(parts, transform.position, parts.transform.rotation), 2);

a dal do parts prefab ParticlesIce.

Trochu mi nejde do hlavy, že se správně instancioval ten prefab, i když jsem ho neměl do parts přiřazený...?

 
Odpovědět 3.10.2015 14:52
Avatar
danar2004
Člen
Avatar
Odpovídá na danar2004
danar2004:3.10.2015 14:57

Aha, hned po odeslání mi to došlo, je přiřazený u stalagu... :)

 
Odpovědět  +1 3.10.2015 14:57
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 2 zpráv z 2.