Spawn de objetos (muito próximos)
3 participantes
Página 1 de 1
Spawn de objetos (muito próximos)
Acabei de usar um script para spawnar objetos em x de forma aleatória(dentro de um limite.Ex: spawn de"arvore" entre x:1 e x:20). Porém não aço a mínima ideia de como colocar um limite entre eles, para não spawnarem muito perto(como na imagem). Qual seria a lógica?
BananaSmith- Membro
- PONTOS : 3422
REPUTAÇÃO : 6
Respeito as regras :
Re: Spawn de objetos (muito próximos)
Posta seu script
GustavoMaster- Avançado
- PONTOS : 3774
REPUTAÇÃO : 14
Idade : 21
Respeito as regras :
Re: Spawn de objetos (muito próximos)
Aqui está.
- Código:
using UnityEngine;
using System.Collections;
public class MovimentSpawn : MonoBehaviour {
public float movimento;
public GameObject arvore;
public float distancia;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
transform.position -= new Vector3 (movimento, 0, 0 * Time.deltaTime);
}
void OnTriggerEnter2D(Collider2D outro){
if (outro.tag == "Spawn") {
Instantiate(arvore, new Vector3(transform.position.x+distancia, transform.position.y, transform.position.z), Quaternion.identity);
}
if (outro.tag == "Destroyer") {
Destroy(gameObject);
}
}
}
BananaSmith- Membro
- PONTOS : 3422
REPUTAÇÃO : 6
Respeito as regras :
Re: Spawn de objetos (muito próximos)
Ignorem o script acima... Esse é o que estou usando!!!
- Código:
using UnityEngine;
using System.Collections;
public class MovimentSpawn : MonoBehaviour {
public float movimento;
public GameObject arvore;
private float distancia;
// Use this for initialization
void Start () {
distancia = Random.Range (19.16f, 38.44f);
}
// Update is called once per frame
void Update () {
transform.position -= new Vector3 (movimento, 0, 0 * Time.deltaTime);
}
void OnTriggerEnter2D(Collider2D outro){
if (outro.tag == "Spawn") {
Instantiate(arvore, new Vector3(distancia, transform.position.y, transform.position.z), Quaternion.identity);
}
if (outro.tag == "Destroyer") {
Destroy(gameObject);
}
}
}
BananaSmith- Membro
- PONTOS : 3422
REPUTAÇÃO : 6
Respeito as regras :
Re: Spawn de objetos (muito próximos)
Testa isso para ver se vai funcionar, fiz de cabeça então pode não funcionar como queria:
- Código:
using UnityEngine;
using System.Collections;
public class MovimentSpawn : MonoBehaviour {
public float movimento;
public GameObject arvore;
private float distancia;
private GameObject[] arvores;
void Start () {
distancia = Random.Range (19.16f, 38.44f);
}
void Update () {
transform.position -= new Vector3 (movimento, 0, 0 * Time.deltaTime);
}
void OnTriggerEnter2D(Collider2D outro){
arvores = GameObject.FindGameObjectsWithTag("Arvore");
if (outro.tag == "Spawn") {
spawnArvore(2f); //COLOCA A DISTANCIA MINIMA PARA SPAWNAR
}
if (outro.tag == "Destroyer") {
Destroy(gameObject);
}
}
public GameObject spawnArvore(float distanciaMin){
Vector3 dist = new Vector3(distancia, transform.position.y, transform.position.z);
foreach (Transform t in arvores) {
if (Vector3.Distance(t.position, distancia) <= distanciaMin){
return null;
}
}
return Instantiate(gameObject, dist, Quaternion.identity) as GameObject;
}
}
Stipp- Avançado
- PONTOS : 3642
REPUTAÇÃO : 102
Idade : 25
Áreas de atuação : Programação: C#, VB.NET, PHP e outras.
Modelagem: Blender.
Respeito as regras :
Re: Spawn de objetos (muito próximos)
Assets/Script/MovimentSpawn.cs(35,17): error CS0030: Cannot convert type `UnityEngine.GameObject' to `UnityEngine.Transform'
Deu erro
Deu erro
BananaSmith- Membro
- PONTOS : 3422
REPUTAÇÃO : 6
Respeito as regras :
Re: Spawn de objetos (muito próximos)
Tenta agora:
Lembra de criar a tag 'Arvore' e colocar no prefab da arvore;
Lembra de criar a tag 'Arvore' e colocar no prefab da arvore;
- Código:
using UnityEngine;
using System.Collections;
public class MovimentSpawn : MonoBehaviour {
public float movimento;
public GameObject arvore;
private float distancia;
private GameObject[] arvores;
void Start () {
distancia = Random.Range (19.16f, 38.44f);
}
void Update () {
transform.position -= new Vector3 (movimento, 0, 0 * Time.deltaTime);
}
void OnTriggerEnter2D(Collider2D outro){
arvores = GameObject.FindGameObjectsWithTag("Arvore");
if (outro.tag == "Spawn") {
spawnArvore(2f); //COLOCA A DISTANCIA MINIMA PARA SPAWNAR
}
if (outro.tag == "Destroyer") {
Destroy(gameObject);
}
}
public GameObject spawnArvore(float distanciaMin){
Vector3 dist = new Vector3(distancia, transform.position.y, transform.position.z);
foreach (GameObject t in arvores) {
if (Vector3.Distance(t.transform.position, dist) <= distanciaMin){
return null;
}
}
return Instantiate(gameObject, dist, Quaternion.identity) as GameObject;
}
}
Stipp- Avançado
- PONTOS : 3642
REPUTAÇÃO : 102
Idade : 25
Áreas de atuação : Programação: C#, VB.NET, PHP e outras.
Modelagem: Blender.
Respeito as regras :
Tópicos semelhantes
» Spawn de objetos
» Spawn varios objetos
» Menu de Spawn
» [RESLVIDO] Unity - "transform.SetParent()" em 2 objetos move outros objetos
» Carro dá spawn no ar
» Spawn varios objetos
» Menu de Spawn
» [RESLVIDO] Unity - "transform.SetParent()" em 2 objetos move outros objetos
» Carro dá spawn no ar
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos