NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

Lekce 4 - Unity (C#) Android: Generování stalagů 2

V minulé lekci, Unity (C#) Android: Generování stalagů, jsme se zabývali tvorbou mapy. Dnešní tutoriál se zabývá opravou a úpravou mapy a jejím generováním.

Video

Generování mapy

Přidávám skript, který je použit ve videu, pokud se vám ho nechce opisovat :) Je to skript pro generování levelu. Prozatím je to finální verze. Oproti předchozímu dílu má hned několik úprav.

using UnityEngine;
using System.Collections;

public class StartScript : MonoBehaviour {

    public GameObject[] stalagPrefabs;
    public float distance = 10;
    public float offset = 10;
    public int count = 2;

    public float minHeight;
    public float maxHeight;

    public float minWidth;
    public float maxWidth;


    public Vector3 lastPos;

    void GenerateSet()
    {
        for (int i = 0; i < count; i++)
        {
            Vector2 pos = new Vector2();
            pos.x = lastPos.x + (2*distance) + offset + i * distance;

            int r = Random.Range(0, 2);
            int rotateIndicator = 1;
            if (r == 0)
            {
                pos.y = 4.5f;
            }
            else
            {
                pos.y = -4.5f;
                rotateIndicator = -1;
            }
            GenerateStalag(pos, rotateIndicator);
        }
    }

    // Use this for initialization
    void Start () {
        lastPos = transform.position;
        //GenerateSet();
    }

    void GenerateStalag(Vector2 p, int rotateInd)
    {
        GameObject g = Instantiate(stalagPrefabs[Random.Range(0, stalagPrefabs.Length)], p, Quaternion.identity) as GameObject;
        Vector3 theScale = g.transform.localScale;

        theScale.y = Random.Range(minHeight, maxHeight) * rotateInd;
        theScale.x = Random.Range(minWidth, maxWidth);
        g.transform.localScale = theScale;

        Bounds b = g.GetComponent<SpriteRenderer>().bounds;
        p.y -= b.size.y / 2 * rotateInd;

        g.transform.position = p;
    }


    void OnTriggerEnter2D(Collider2D col)
    {
        if(col.CompareTag("Player"))
        {
            GenerateSet();
            lastPos = transform.position;
            lastPos.x += count * distance;
            transform.position = lastPos;
        }
    }
}

Jak hra vypadá teď?

Zdrojákoviště Unity - 2D hry

Problémy?

Pokud máte nějaké otázky ohledně nastavování, neváhejte se zeptat v komentářích, nebo mi napsat do zpráv.

Příští lekce, Unity (C#) Android: GUI - menu 1, se zabývá vytvářením menu.


 

Předchozí článek
Unity (C#) Android: Generování stalagů
Všechny články v sekci
Zdrojákoviště Unity - 2D hry
Přeskočit článek
(nedoporučujeme)
Unity (C#) Android: GUI - menu 1
Článek pro vás napsal vratislavino
Avatar
Uživatelské hodnocení:
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.
Aktivity