[RESOLVIDO] Instanciar objetos com um limite.
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Instanciar objetos com um limite.
E ai pessoal tudo bem ? Eu tenho um script para Instanciar "Spawnar" Zombies em meu jogo, até ai tudo bem ele funciona como eu quero, porem eu queria fazer uma verificação para ver se tem "por exemplo 20 Zombies na minha cena", ele não instanciar mais nenhum até um desses 20 Zombies morrer. Alguém sabe como eu poderia fazer isso ? Se não em alguns minutos vai estar cheio de Zombies no jogo.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpawnZombies : MonoBehaviour
{
private FPSController player;
public GameObject zombie; // o prefab zombie que é instanciado
private float tempoSpawn = OPCOES.dificuldade; // o tempo do spawn é controlado pelas opções do jogo, como a dificuldade que você quer.
public Transform[] pontosDeSpawn; // uma array que armazena os pontos de spawn
void Start()
{
player = FindObjectOfType(typeof(FPSController)) as FPSController;
InvokeRepeating("StartSpawn", 2, tempoSpawn);
}
void StartSpawn()
{
int PontosSpawnIndex = Random.Range(0, pontosDeSpawn.Length);
if (Vector3.Distance(pontosDeSpawn[PontosSpawnIndex].transform.position, player.transform.position) >= 10)
{
Instantiate(zombie, pontosDeSpawn[PontosSpawnIndex].position, pontosDeSpawn[PontosSpawnIndex].rotation);
}
}
}
jeancvo3- Membro
- PONTOS : 1501
REPUTAÇÃO : 17
Idade : 27
Respeito as regras :
Re: [RESOLVIDO] Instanciar objetos com um limite.
Adicione uma tag ao objeto do zumbi, com um nome qualuer, por exemplo "Zombie". Depois no script você faz a verificação de objetos com essa tag e se for menor de 20 ele instancia o zumbi.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpawnZombies : MonoBehaviour
{
private FPSController player;
public GameObject zombie; // o prefab zombie que é instanciado
private float tempoSpawn = OPCOES.dificuldade; // o tempo do spawn é controlado pelas opções do jogo, como a dificuldade que você quer.
public Transform[] pontosDeSpawn; // uma array que armazena os pontos de spawn
void Start()
{
player = FindObjectOfType(typeof(FPSController)) as FPSController;
InvokeRepeating("StartSpawn", 2, tempoSpawn);
}
void StartSpawn()
{
GameObject[] zombiesInScene = GameObject.FindGameObjectsWithTag("Zombie");
int PontosSpawnIndex = Random.Range(0, pontosDeSpawn.Length);
if (Vector3.Distance(pontosDeSpawn[PontosSpawnIndex].transform.position, player.transform.position) >= 10 && zombiesInScene.Length < 20)
{
Instantiate(zombie, pontosDeSpawn[PontosSpawnIndex].position, pontosDeSpawn[PontosSpawnIndex].rotation);
}
}
}
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Instanciar objetos com um limite.
Pokedlg escreveu:Adicione uma tag ao objeto do zumbi, com um nome qualuer, por exemplo "Zombie". Depois no script você faz a verificação de objetos com essa tag e se for menor de 20 ele instancia o zumbi.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpawnZombies : MonoBehaviour
{
private FPSController player;
public GameObject zombie; // o prefab zombie que é instanciado
private float tempoSpawn = OPCOES.dificuldade; // o tempo do spawn é controlado pelas opções do jogo, como a dificuldade que você quer.
public Transform[] pontosDeSpawn; // uma array que armazena os pontos de spawn
void Start()
{
player = FindObjectOfType(typeof(FPSController)) as FPSController;
InvokeRepeating("StartSpawn", 2, tempoSpawn);
}
void StartSpawn()
{
GameObject[] zombiesInScene = GameObject.FindGameObjectsWithTag("Zombie");
int PontosSpawnIndex = Random.Range(0, pontosDeSpawn.Length);
if (Vector3.Distance(pontosDeSpawn[PontosSpawnIndex].transform.position, player.transform.position) >= 10 && zombiesInScene.Length < 20)
{
Instantiate(zombie, pontosDeSpawn[PontosSpawnIndex].position, pontosDeSpawn[PontosSpawnIndex].rotation);
}
}
}
Muito obrigado mesmo!!!
jeancvo3- Membro
- PONTOS : 1501
REPUTAÇÃO : 17
Idade : 27
Respeito as regras :
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] limite de posicionamento
» [RESOLVIDO] Limite de renderização das texturas
» [RESOLVIDO] Colocar limite de cliques em button
» [RESOLVIDO] Como eu coloco um limite em dar play em Audio
» [RESOLVIDO] como eu adiciono um limite para a Posição Y?
» [RESOLVIDO] Limite de renderização das texturas
» [RESOLVIDO] Colocar limite de cliques em button
» [RESOLVIDO] Como eu coloco um limite em dar play em Audio
» [RESOLVIDO] como eu adiciono um limite para a Posição Y?
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos