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

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

Tento videotutoriál navazuje na předchozí díl o programování her pro Android v Unity, kde 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.


 

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


 



 

 

Komentáře

Avatar
danar2004
Člen
Avatar
danar2004:

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:

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.