Limit spawnowanych obiektów

Programowanie w Unity.

Limit spawnowanych obiektów

Postprzez batyskaf » 17 Lut 2021, 03:03

Jak narzucić limit spawania, żeby po zniszczeniu obiektów spawnowały się kolejne w ramach limitu?

Kod: Zaznacz wszystko
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NPCSpowner : MonoBehaviour
{
    [SerializeField]
    GameObject NPCPrefab;

    [SerializeField]
    float AreaRadius = 5f;

    [SerializeField]
    float Duration = 5f;

    void Start()
    {
        StartCoroutine(SpownNPCCoroutine());
    }

    private void OnDrawGizmos()
    {
        Gizmos.color = Color.white;
        Gizmos.DrawWireSphere(transform.position, AreaRadius);
    }

    IEnumerator SpownNPCCoroutine()
    {
        while(true)
        {
            SpownNPC();
            yield return new WaitForSeconds(Duration);
        }
    }

    private void SpownNPC()
    {
        var NPC = Instantiate(NPCPrefab);
        NPC.transform.position = transform.position +Random.insideUnitSphere * AreaRadius;
    }
}


batyskaf
 
Posty: 4
Rejestracja: 07 Lut 2021, 14:51
Has thanked: 0 time
Been thanked: 0 time

Re: Limit spawnowanych obiektów

Postprzez Ether_141 » 19 Lut 2021, 02:19

Dorób sobie dwie zmienne, limit i currentEnemiesCount. Obydwie typu int. W limit ustaw limit obiektów jakie mogą być zrespione w jednym czasie. Potem za każdym razem gdy tworzysz nowy obiekt, dodawaj do currentEnemiesCount 1, a jak niszczysz to obejmuj 1. Teraz w metodzie SpawnNPC, dodaj ifa sprawdzającego czy licznik przeciwników nie jest większy bądź równy limitowi. Jeśli nie jest to można stworzyć nowy obiekt, jeśli jest to go po prostu nie twórz i tyle.
Awatar użytkownika
Ether_141
 
Posty: 529
Rejestracja: 29 Sie 2015, 11:47
Has thanked: 0 time
Been thanked: 0 time

Re: Limit spawnowanych obiektów

Postprzez batyskaf » 24 Lut 2021, 01:17

A w jaki sposób ma odejmować currentEnemiesCount, po zniszczeniu obiektu?
batyskaf
 
Posty: 4
Rejestracja: 07 Lut 2021, 14:51
Has thanked: 0 time
Been thanked: 0 time

Re: Limit spawnowanych obiektów

Postprzez Wichur » 24 Lut 2021, 11:05

Przy Destroy dać
currentEnemiesCount--;
Awatar użytkownika
Wichur
 
Posty: 148
Rejestracja: 19 Gru 2017, 10:33
Miejscowość: Pruszcz Gdański
Has thanked: 0 time
Been thanked: 0 time

Re: Limit spawnowanych obiektów

Postprzez batyskaf » 24 Lut 2021, 14:32

A jeśli Destroy jest w skrypcie spawnowanego prefaba, co musze napisać żeby currentEnemiesCount--;
odwoływał się do currentEnemiesCount w skrypcie spawnera?
batyskaf
 
Posty: 4
Rejestracja: 07 Lut 2021, 14:51
Has thanked: 0 time
Been thanked: 0 time

Re: Limit spawnowanych obiektów

Postprzez Ether_141 » 24 Lut 2021, 22:36

Odwołać się w jakiś sposób do obiektu, który ma pole currentEnemiesCount, np. przez GameObject.Find, albo użyj singletona.
Awatar użytkownika
Ether_141
 
Posty: 529
Rejestracja: 29 Sie 2015, 11:47
Has thanked: 0 time
Been thanked: 0 time


Wróć do Skrypty

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 7 gości

cron