Jump to content

Recommended Posts

buenas,

a ver si me pueden ayudar, estoy intentado crear unos gameobjects de forma aleatoria en una posición, algo así:

Cita

 

gameobject X = (gameobject) instantiate(xx);

x.transform.position = new vector3(random.range(x,x),random.range(y,y),random.range(z,z));

 

el problema lo tengo que no se como hacer para que antes de hacer el random de la posición compruebe si donde va aparecer hay suelo o esta vacío y que el random solo lo haga entre las posiciones donde puede aparece.

no se si me se explicar, hahaha. la idea es que el suelo son bloques que se pueden romper, y luego genero un objeto random en un aposición que tenga bloque de suelo.

agradezco la ayuda, 

gracias de antemano.

 

Share this post


Link to post
Share on other sites

hols GSG3d,

lo he estado mirando antes, pero no entiendo muy bien como funciona y no se como implementarlo para que primero compruebe en una área si existen los bloques gameobject i luego genere una posición aleatoria partir de estos para crear el gameobject.

gracias 

Share this post


Link to post
Share on other sites

Planteas de forma errónea la creación de las instancias:

  • Declara e inicializa una variable de tipo Position, con unos Random, más arriba en el código, en lugar de crearlos in-situ dentro del Instantiate.
  • Evalúa si la posición de esos Random coincide con algún suelo. En caso contrario, puedes volver a llamar al Random para que lo haga en otra posición distinta.
  • Ahora que ya tienes una posición Random válida, sólo falta instanciar allí.

 

Resumiendo, no hagas el random durante el instanciado y evalúes después; haz el random ANTES y evalúa ANTES, y por último instancia.

Share this post


Link to post
Share on other sites

gracias pioj, 

soy un  poco novato  y estos días he esto probando esto que comentas, pero no se como declarar una variable de tipo Position, y que con randoms me de las coordenadas.

me podes hacer un ejemplo ?? os lo agradecería un montón.

Planteas de forma errónea la creación de las instancias:

  • Declara e inicializa una variable de tipo Position, con unos Random, más arriba en el código, en lugar de crearlos in-situ dentro del Instantiate.
  • Evalúa si la posición de esos Random coincide con algún suelo. En caso contrario, puedes volver a llamar al Random para que lo haga en otra posición distinta.
  • Ahora que ya tienes una posición Random válida, sólo falta instanciar allí.

 

Resumiendo, no hagas el random durante el instanciado y evalúes después; haz el random ANTES y evalúa ANTES, y por último instancia.

gracias pioj, 

soy un  poco novato  y estos días he esto probando esto que comentas, pero no se como declarar una variable de tipo Position, y que con randoms me de las coordenadas.

me podes hacer un ejemplo ?? os lo agradecería un montón.

Share this post


Link to post
Share on other sites

gracias lo he estado mirando, ya es como yo lo hacia, mas o menos.

el problema es que no se como usar el raycast para verificar si la posición aleatoria y luego instancias el objeto deseado en aleatorio.

alguna ayuda con el raycast? en la web de unity el ejemplo no lo entiendo, tampoco se para que sirve raycasthit.

gracias por todo. 

Share this post


Link to post
Share on other sites

el problema es que no se como usar el raycast para verificar si la posición aleatoria y luego instancias el objeto deseado en aleatorio.

alguna ayuda con el raycast? en la web de unity el ejemplo no lo entiendo, tampoco se para que sirve raycasthit.

gracias por todo. 

Share this post


Link to post
Share on other sites

me puede explicar un brevemente como se utiliza, y el raycasthit?

Lanza un raycast hacia el suelo desde esa posicion.

Lanza un raycast hacia el suelo desde esa posicion.

Share this post


Link to post
Share on other sites

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...