Unity sonsuz yola rastgele engeller spawn etmek

Saldon

Hectopat
Katılım
22 Aralık 2018
Mesajlar
137
Çözümler
1
Arkadaşlar öncelikle merhaba, bir top oyunum var ve sonsuz bir yolum var.
Fakat bu yol üzerine rastgele engeller spawn etmek istiyorum. Bunu nasıl yapabilirim?
 
Vector2 , Random.Range ve Instantiate fonksiyonlarını iyi öğrenmenizi tavsiye ederim. Bu 3'ünü kullanarak yapabilirsiniz.

Vector2 konumlandırmak için, Random.Range rastgele sayı tanımlamak için Instantiate fonksiyonu ise ataçladığınız Oyun Objesini klonlamak için kullanılıyor.

Örnek Header ve Fonksiyon:

C#:
[Header("Platforms")]
    public GameObject blockPrefab;
    public GameObject blockPrefab_pink;
    public GameObject blockPrefab_movable;
    public float currentBlockY;
    public float distanceBetweenBlocks = 5f;
    public float distanceBeforeSpawnBlock = 10f;
    public int initBlocksLine = 2;
    public List<GameObject> blocksPool;

private void SpawnBlocks()
    {
        pos2 = new Vector2(Random.Range(-5, 5), currentBlockY);
        range = Random.Range(0, 100);

        if (range <= 50)
        {
            GameObject go = Instantiate(blockPrefab, pos2, Quaternion.identity, transform);
            blocksPool.Add(go);
            currentBlockY += distanceBetweenBlocks;
        }
        else if (range > 50 && range < 90)
        {
            GameObject go = Instantiate(blockPrefab_pink, pos2, Quaternion.identity, transform);
            blocksPool.Add(go);
            currentBlockY += distanceBetweenBlocks;
        }
        else
        {
            pos2 = new Vector2(-5, currentBlockY);
            GameObject go = Instantiate(blockPrefab_movable, pos2, Quaternion.identity, transform);
            blocksPool.Add(go);
            currentBlockY += distanceBetweenBlocks;
        }
        Destroy(blocksPool[0]);
        blocksPool.RemoveAt(0);
    }
 
Kod:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Klonla : MonoBehaviour
{
    public GameObject[] Objeler;
    public Transform[] SpawnNoktaları;
    public GameObject SpawnlananNesneler;


    // Start is called before the first frame update
    void Start()
    {
        for (int i = 0; i < 10; i++)
        {
           GameObject Obje = Instantiate(Objeler[Random.Range(0, Objeler.Length)], SpawnNoktaları[Random.Range(0, SpawnNoktaları.Length)].position, Quaternion.identity);
            Obje.transform.parent = SpawnlananNesneler.transform;
        }
    }

    private void OnTriggerEnter(Collider other)
    {
        if(other.gameObject.tag == "Player")
        {
            for (int i = 0; i < 10; i++)
            {
                int sayi = Random.Range(0,SpawnNoktaları.Length);

                GameObject Obje = Instantiate(Objeler[Random.Range(0, Objeler.Length)], SpawnNoktaları[Random.Range(0, SpawnNoktaları.Length)].position, Quaternion.identity) as GameObject;
                Obje.transform.parent = SpawnlananNesneler.transform;
            }
        }
    }

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


}

Bu şekilde bir kodlama yaptım fakat aynı nesneler noktalar ile iç içe giriyor. Yani hem ölüm nesnenesi hem puan nesnesi iç içe olunca bir bug oluşuyor bunu nasıl engellerim.
1 noktaya 1 nesne ışınlasın.
 
Arkadaşlar öncelikle merhaba, bir top oyunum var ve sonsuz bir yolum var.
Fakat bu yol üzerine rastgele engeller spawn etmek istiyorum. Bunu nasıl yapabilirim?
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
Spawnerı koyduğun gameobject i yere koyarsın yerde spawnlar yani sen ayarlarsın.
Edit: aynı yere koymasın demişsin şimdi gördüm onu bilmiyorum.
 

Geri
Yukarı