Unity sonsuz yola rastgele engeller spawn etmek

  • Konuyu başlatan Saldon
  • Başlangıç Tarihi
  • Mesaj 3
  • Görüntüleme 3.261

Saldon

Kilopat
Katılım
22 Aralık 2018
Mesajlar
146
Çözümler
3
Yer
Hatay
Daha fazla  
Sistem Özellikleri
Ekran çözünürlüğü: 2560x1440 @ 164Hz
Pencere boyutu: 2560x1307 @ 164Hz
VR: Not Active
Graphics API: Direct3D 11.0 (Level 11.1)
GPU: NVIDIA GeForce RTX 4060
VRAM: 7957MB
Max Texture Size: 16384px
Shader Level: 50
CPU: AMD Ryzen 9 5900X 12-Core Processor (24 thread)
RAM: 32,869 MB (32 GB)
İşletim Sistemi: Windows 11 (10.0.26100) 64bit (Desktop)
Cinsiyet
Erkek
Meslek
Oyun Yapımcısı
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.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı