Spawnar Objetos aleatorios em lugares pre-definidos
Página 1 de 1
Spawnar Objetos aleatorios em lugares pre-definidos
Oi boa tarde,
Estou fazendo um jogo de terror para celular parecido com "Granny",
mas encontrei um problema.
Pesquisei em varios lugares mas nao encontrei a solução.
Eu quero que objetos(exemplo: chave, pá, baterias,etc) surjam em lugares pre-definidos,
ou seja, que eles spawnen por exemplo em gavetas ou armarios.
E tambem que eles nunca spawnen mais que uma vez por partida,(pois so pode ter uma chave, pá, ou bateria).
Agradeço muito.

Estou fazendo um jogo de terror para celular parecido com "Granny",
mas encontrei um problema.
Pesquisei em varios lugares mas nao encontrei a solução.
Eu quero que objetos(exemplo: chave, pá, baterias,etc) surjam em lugares pre-definidos,
ou seja, que eles spawnen por exemplo em gavetas ou armarios.
E tambem que eles nunca spawnen mais que uma vez por partida,(pois so pode ter uma chave, pá, ou bateria).
Agradeço muito.

gabrielgame6772- Iniciante
- PONTOS : 127
REPUTAÇÃO : 2
Respeito as regras :
Re: Spawnar Objetos aleatorios em lugares pre-definidos
- Código:
public Transform[] posicoes;
public Transform objeto;
void Start()
{
objeto.position = posicoes[Random.Range(0, posicoes.Lenght)];
}
testa ae pra ver se funciona
JulioWinchester- MembroAvançado
-
PONTOS : 592
REPUTAÇÃO : 27
Idade : 16
Áreas de atuação : Modelagem 3D
Respeito as regras :
Re: Spawnar Objetos aleatorios em lugares pre-definidos
@JulioWinchester escreveu:
- Código:
public Transform[] posicoes;
public Transform objeto;
void Start()
{
objeto.position = posicoes[Random.Range(0, posicoes.Lenght)];
}
testa ae pra ver se funciona
Funcionou nao
gabrielgame6772- Iniciante
- PONTOS : 127
REPUTAÇÃO : 2
Respeito as regras :
Re: Spawnar Objetos aleatorios em lugares pre-definidos
mesmo erro@SauloeArthur escreveu:Tente trocar Lenght por Length
gabrielgame6772- Iniciante
- PONTOS : 127
REPUTAÇÃO : 2
Respeito as regras :
Re: Spawnar Objetos aleatorios em lugares pre-definidos
na void start, o erro esta vindo pq esta saindo um indice Transform ao inves de position
objeto.position = posicoes[Random.Range(0, posicoes.Length)];
correçao:
boa tarde
objeto.position = posicoes[Random.Range(0, posicoes.Length)];
correçao:
- Código:
objeto.position = posicoes[Random.Range(0, posicoes.Length)].position;
boa tarde
FelipeSouza11- ProgramadorMaster
-
PONTOS : 2095
REPUTAÇÃO : 189
Idade : 30
Áreas de atuação : Programação C#,Html,css, javascript, Bolt vs
Respeito as regras :
Re: Spawnar Objetos aleatorios em lugares pre-definidos
@FelipeSouza11 escreveu:na void start, o erro esta vindo pq esta saindo um indice Transform ao inves de position
objeto.position = posicoes[Random.Range(0, posicoes.Length)];
correçao:
- Código:
objeto.position = posicoes[Random.Range(0, posicoes.Length)].position;
boa tarValeu ajudou bastante, mas quando eu boto mais de um objeto, eles nascem no mesmo lugar. E preciso que eles spwanen em lugares aleatorios mas nunca dois em um so lugar.
gabrielgame6772- Iniciante
- PONTOS : 127
REPUTAÇÃO : 2
Respeito as regras :
Re: Spawnar Objetos aleatorios em lugares pre-definidos
@gabrielgame6772 escreveu:@FelipeSouza11 escreveu:na void start, o erro esta vindo pq esta saindo um indice Transform ao inves de position
objeto.position = posicoes[Random.Range(0, posicoes.Length)];
correçao:
- Código:
objeto.position = posicoes[Random.Range(0, posicoes.Length)].position;
boa tarValeu ajudou bastante, mas quando eu boto mais de um objeto, eles nascem no mesmo lugar. E preciso que eles spwanen em lugares aleatorios mas nunca dois em um so lugar.
SE ALGUEM PUDER ME AJUDAR
gabrielgame6772- Iniciante
- PONTOS : 127
REPUTAÇÃO : 2
Respeito as regras :
Re: Spawnar Objetos aleatorios em lugares pre-definidos
boa tarde brow , depois de quase 1 semana tentando montar minha propria lógica eu felizmente consegui, pesquisei tambem ,más na maioria raramente os objetos spawnaram no mesmo lugar, nao sei se o meu esta perfeito mas deve dá pro gasto
Obs: estou usando os items que são prefabs,
é só o que consegui,espero que ajude
Obs: estou usando os items que são prefabs,
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PrefabsSpawn : MonoBehaviour
{
[Header("Digite o numero maximo de items")]
int maxItems = 4; //max de items que vai ser aleatoriamentes spawnado
public GameObject[] ItemsPrefabs; //Arraste os prefabs pro inspector
public Transform[] RandomLocalsItems; //Transform. Locais de spawnPoint
public List<Transform> lista = new List<Transform>(); //Lista de transform os pontos de spawn serao armazenados aqui
private float tempo = 0.02f;
// Start is called before the first frame update
void Start()
{
SpawnItems();
}
void SpawnItems()
{
StartCoroutine("Spawn");
}
//Ienumerator Coroutine
IEnumerator Spawn() {
yield return new WaitForSeconds(tempo);
if (lista.Count < maxItems)//calcular se a quantidade contida na lista é menor que o maximo de items
{
var index = Random.Range(0, maxItems); //sair um numero aleatorio [0- maxitems ou seja 4]
for (int i = 0; i < maxItems; i++)
{
if (!lista.Contains(RandomLocalsItems[index])) //se a lista nao conter o numero sorteado adicionar o local de spawn correspondete ao sortedo
{
lista.Add(RandomLocalsItems[index]); //add o local a lista
// ol.Add(ItemsPrefabs[index]);
}
else
{
//se ja conter o numero sorteado, chamar novamente o coroutine paara sortear novamente
StartCoroutine("Spawn");
}
}
}
else
{
for(int x=0; x<lista.Count; x++)
{
if (x < lista.Count)
{
GameObject ob = Instantiate(ItemsPrefabs[x], lista[x].position, Quaternion.identity);
StopCoroutine("Spawn");
}
}
}
}
}
é só o que consegui,espero que ajude
FelipeSouza11- ProgramadorMaster
-
PONTOS : 2095
REPUTAÇÃO : 189
Idade : 30
Áreas de atuação : Programação C#,Html,css, javascript, Bolt vs
Respeito as regras :
Página 1 de 1
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum