Intanciar em posiçao determinada
3 participantes
Página 1 de 1
Intanciar em posiçao determinada
Alguem poderia me ajudar eu queria que o meu Objeto a o instanciar acontecesse um Random entre o positivo e negativo, se desse positivo ele acrecentava +3 no eixo X caso desse negativo ele acrescentaria -3 no eixo X e Sempre acrescentando +3 no eixo Z.
Eu coloquei por colisao para instanciar, como faria para instanciar por distancia.
Eu coloquei por colisao para instanciar, como faria para instanciar por distancia.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GeradordeLevel : MonoBehaviour {
public GameObject BlocoCenario;
public int ladoPositivo = 3;
public int ladoNegativo = -3;
void Start () {
}
void OnTriggerEnter (Collider other){
if (other.CompareTag("Player")) {
Instantiate (BlocoCenario, transform.position, transform.rotation);
Destroy (gameObject, 5);
}
}
}
Re: Intanciar em posiçao determinada
bruxamissi escreveu:Alguem poderia me ajudar eu queria que o meu Objeto a o instanciar acontecesse um Random entre o positivo e negativo, se desse positivo ele acrecentava +3 no eixo X caso desse negativo ele acrescentaria -3 no eixo X e Sempre acrescentando +3 no eixo Z.
Eu coloquei por colisao para instanciar, como faria para instanciar por distancia.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GeradordeLevel : MonoBehaviour {
public GameObject BlocoCenario;
public int ladoPositivo = 3;
public int ladoNegativo = -3;
void Start () {
}
void OnTriggerEnter (Collider other){
if (other.CompareTag("Player")) {
Instantiate (BlocoCenario, transform.position, transform.rotation);
Destroy (gameObject, 5);
}
}
}
Simples, isso se o objeto que você quer instanciar seja a partir da posição do gameObject que está o script:
- Código:
GameObject o = Instantiate (BlocoCenario);
[font=monospace]Random.range random = (-1, 1);[/font]
[font=monospace]if(random > 0){[/font]
[font=monospace]o.transform.localPosition = new Vector3(transform.position.x + 3, trasnform.position.y, trasnform.position.z + 3);[/font]
[font=monospace]}else{[/font]
o.transform.localPosition = new Vector3(transform.position.x - 3, trasnform.position.y, trasnform.position.z + 3);[font=monospace]
[/font]
[font=monospace]}[/font]
Re: Intanciar em posiçao determinada
ops float ou int aqui:
- Código:
[size=14][color=#660066]float[/color][/size][size=14] random [/size][size=14]=[/size][size=14] [/size][size=14]Random[/size][size=14].[/size][size=14]range[/size][size=14](-[/size][size=14]1[/size][size=14],[/size][size=14] [/size][size=14]1[/size][size=14]);[/size]
[size=14]
[/size]
[size=14]//ou[/size]
[size=14]
[/size]
[size=14][/size]
[size=14][color=#660066]int[/color][/size][size=14] random [/size][size=14]=[/size][size=14] [/size][size=14]Random[/size][size=14].[/size][size=14]range[/size][size=14](-[/size][size=14]1[/size][size=14],[/size][size=14] [/size][size=14]1[/size][size=14]);[/size]
Re: Intanciar em posiçao determinada
ops float ou int aqui:
int/float random = Random.Range(-1, 1);
obs: não sei pq, mas está indo tudo bugado as respostas, ai também está?
int/float random = Random.Range(-1, 1);
obs: não sei pq, mas está indo tudo bugado as respostas, ai também está?
Re: Intanciar em posiçao determinada
pw funcionou mais ele so ta instanciando para o lado esquerdo que é o positivo e esta acontecende isso, ele ta destruindo no cenario mais isso aqui nao ta sendo destruido e ta instanciando tantos que o Unity trava.
Error:
Script:
Error:
Script:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GeradordeLevel : MonoBehaviour {
public GameObject BlocoCenario;
void Start () {
GetComponent<MeshRenderer>().material.color = new Color(Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f), 1);
}
void OnTriggerEnter (Collider other){
GameObject o = Instantiate (BlocoCenario);
int random = Random.Range (-1, 1);
if(random > 0){
o.transform.localPosition = new Vector3(transform.position.x + 3, transform.position.y, transform.position.z + 3);
}else{
o.transform.localPosition = new Vector3(transform.position.x - 3, transform.position.y, transform.position.z + 3);
}
Destroy (gameObject, 1);
}
}
Re: Intanciar em posiçao determinada
bruxamissi escreveu:pw funcionou mais ele so ta instanciando para o lado esquerdo que é o positivo e esta acontecende isso, ele ta destruindo no cenario mais isso aqui nao ta sendo destruido e ta instanciando tantos que o Unity trava.
Error:
Script:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GeradordeLevel : MonoBehaviour {
public GameObject BlocoCenario;
void Start () {
GetComponent<MeshRenderer>().material.color = new Color(Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f), 1);
}
void OnTriggerEnter (Collider other){
GameObject o = Instantiate (BlocoCenario);
int random = Random.Range (-1, 1);
if(random > 0){
o.transform.localPosition = new Vector3(transform.position.x + 3, transform.position.y, transform.position.z + 3);
}else{
o.transform.localPosition = new Vector3(transform.position.x - 3, transform.position.y, transform.position.z + 3);
}
Destroy (gameObject, 1);
}
}
Para ser destruído você tem que escrever um script para isso, e está no OnTriggerEnter, era para instanciar apenas um quando você entra no trigger, então creio que esteja entrando toda hora de algum jeito, ou com vários triggers sendo ativado, não sei o que você está fazendo ai.
Re: Intanciar em posiçao determinada
Acho que o Random nao esta funcionando ele so ta instanciando para um lado
Re: Intanciar em posiçao determinada
Não sou um especialista, mas o Random.Range não dá como resultado o último número que você definiu como limite.
Ex: Random.Range (2, 5);
Os resultados só podem ser 2, 3 e 4.
Ex: Random.Range (-1, 1);
Os resultados só podem ser -1 e 0.
É por isso que está instanciando apenas de um lado.
Ex: Random.Range (2, 5);
Os resultados só podem ser 2, 3 e 4.
Ex: Random.Range (-1, 1);
Os resultados só podem ser -1 e 0.
É por isso que está instanciando apenas de um lado.
JoelMJunior- MembroAvançado
- PONTOS : 2945
REPUTAÇÃO : 13
Respeito as regras :
Re: Intanciar em posiçao determinada
JoelMJunior escreveu:Não sou um especialista, mas o Random.Range não dá como resultado o último número que você definiu como limite.
Ex: Random.Range (2, 5);
Os resultados só podem ser 2, 3 e 4.
Ex: Random.Range (-1, 1);
Os resultados só podem ser -1 e 0.
É por isso que está instanciando apenas de um lado.
Sim, talvez ele esteja usando um int em vez de um float, ai vai só instanciar um lado mesmo.
Re: Intanciar em posiçao determinada
Estou usando float agora esta instanciando dos dois lados eu coloquei um "="
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GeradordeLevel : MonoBehaviour {
public GameObject BlocoCenario;
void Start () {
}
void OnTriggerEnter (Collider other){
GameObject o = Instantiate (BlocoCenario);
float random = Random.Range (-1, 1);
if(random >= 0){
o.transform.localPosition = new Vector3(transform.position.x + 3, transform.position.y, transform.position.z + 3);
}else{
o.transform.localPosition = new Vector3(transform.position.x - 3, transform.position.y, transform.position.z + 3);
}
}
}
Tópicos semelhantes
» Como transformo a posição de um objeto em outra posição?
» TravarPersonagem em um angulo por determinada ação
» Problema com o Morrer ao Cair de Determinada altura
» [RESOLVIDO]COMO COLOCAR SOM EM DETERMINADA AREA?
» COMO EXECUTAR UMA AÇÃO EM DETERMINADA DISTANCIA?
» TravarPersonagem em um angulo por determinada ação
» Problema com o Morrer ao Cair de Determinada altura
» [RESOLVIDO]COMO COLOCAR SOM EM DETERMINADA AREA?
» COMO EXECUTAR UMA AÇÃO EM DETERMINADA DISTANCIA?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos