Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Instanciacion dentro de un intervalo

Iniciado por KevinLastra, Noviembre 10, 2016, 09:26:54 PM

Tema anterior - Siguiente tema
Muy buenas a todos, tengo un problema, veran lo que pasa esque yo quiero que un objeto instanciado con el mouse(se crea el objeto donde el mouse iso click) instancie varios objetos mas pero dentro de un intervalo en x, para que me entiendan mejor es un ataque que al hacer click donde tu quieras crea una nube que crea bolas de fuego que caen al suelo.
 
 
 
                                                       |-------------0---------------|             el cerro es donde se iso click y las barras laterales son el minimo y el maximo del intervalo
 
 
 
como ago esto.???
 
porque lo que yo tengo es esto y me sale error y ya no se que hacer...
 
Instantiate(atatque, Random.Range(min.transform ,max.transform), Quaternion.Identity);
 
 
 
 
 
Grasias por su atencion

Cuando busques ayuda y tengas un error te doy el consejo que digas el error que tienes, dicho esto te respondo por que esta claro el error que te esta dando. Estas llamado al instantiate pasandole como parametro un float (o int depende lo que contenga el Random.Range) para que te funcione tendrias que hacer:
 
 
 

Instantiate(atatque, new Vector3(Random.Range(minX.transform ,maxX.transform),Random.Range(minY.transform ,maxY.transform),Random.Range(minZ.transform ,maxZ.transform)), Quaternion.Identity);

 
Esto puede tener variantes, como por ejemplo si quieres que siempre salgan a la misma altura.

Noviembre 12, 2016, 01:43:25 PM #2 Ultima modificación: Noviembre 12, 2016, 06:33:18 PM por KevinLastra
tengo otra pregunta referente al mismo tema, haciendo cuenta que el intervalo es el radio osea de un circulo para que los proyectiles aparescan dentro de este circulo como funcionaria..??

Noviembre 13, 2016, 01:05:27 PM #3 Ultima modificación: Noviembre 13, 2016, 01:06:03 PM por esr
No es muy complicado, lo que tienes que haces es coger la posición del centro del circulo y crear Cuatro variables para sus máximos y mínimos. Te pongo un ejemplo que lo vas a entender mejor.
 
 
 


maxRad = 5;
minRad = -5;
// asumimos que el script es componente del GameObject donde se va a crear la explosion //
// madRad y minRad sera el valor maximo y minimo, son varoables publicas globales a la clase //
float maxX = transform.position.x + maxRad;
float maxZ = transform.position.z + maxRad;
float minX = transform.position.x + minRad;
float minZ = transform.position.z + minRad;
// colocaremos la explosion a la misma altura que se encuentra el centro del GameObject que crea la explosion. //
Instantiate(atatque, new Vector3(Random.Range(minX ,maxX),transfom.y,Random.Range(minZ ,maxZ)), Quaternion.Identity);

 
Compruébalo por que no he probado ese código.

Etiquetas: