IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

8. diel - Unity (C #) Android: Generovanie Stalag 2

V minulej lekcii, Unity (C #) Android - MenuPart, Eraser a pozadia , sme pracovali na odstraňovaní už zdolaných prekážok a tiež na nekonečnom opakovaní pozadí. Pridali sme aj ďalšie herné menu.

V minulej lekcii, Unity (C #) Android - MenuPart, Eraser a pozadia , sme sa zaoberali tvorbou mapy. Dnešné tutoriál sa zaoberá opravou a úpravou mapy a jej generovaním.

Video

Generovanie mapy

Pridávam skript, ktorý je použitý vo videu, ak sa vám ho nechce opisovať :) Je to skript pre generovanie levelu. Zatiaľ je to finálna verzia. Oproti predchádzajúcemu dielu má hneď niekoľko ú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;
        }
    }
}

Ako hra vyzerá teraz?

Tvorba 2D arkády pre Android v Unity

Problémy?

Ak máte nejaké otázky ohľadom nastavovania, neváhajte sa opýtať v komentároch, alebo mi napísať do správ.

Budúci lekcie, Unity (C #) Android: GUI - menu 1 , sa zaoberá vytváraním menu.


 

Predchádzajúci článok
Unity (C #) Android - MenuPart, Eraser a pozadia
Všetky články v sekcii
Tvorba 2D arkády pre Android v Unity
Preskočiť článok
(neodporúčame)
Unity (C #) Android: GUI - menu 1
Článok pre vás napísal vratislavino
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
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