Jump to content
UnitySpain
Sign in to follow this  
Pipioca

Superposición de objetos en el GameObject.Instantiate

Recommended Posts

Buenos días gente!

Miren, tengo una duda que espero me puedan resolver. Estoy haciendo un juego sencillo de plataformas, donde las plataformas se van generando aleatoriamente el la posición de unos "generadores" que se mueven junto a la cámara.

La cosa es que cuando no muevo al personaje, se crean los objetos uno encima de otro, de esta forma (ver imágen).

Uso la siguiente sentencia: GameObject.Instantiate(objeto, transform.position, Quaternion.identity);

¿Cómo puedo saber si en la posición donde va a crear el objeto ya existe uno para que en ese caso no lo cree y se machaque?

Muchas gracias de antemano!

Saludos!

 

superpone.PNG

Share this post


Link to post
Share on other sites

Pues imagino que debe ser tan fácil como condicionar que el personaje se ha de mover un mínimo de espacio respecto a su posición actual, para ser considerado como un "update de movimiento" y que por tanto se genere ese contenido nuevo.

Para ello convendría que tuvieras en cuenta el tamaño medio de cada asset de escenario que tratas de instanciar. Si es una plataforma grande, pues más distancia de seguridad...

Share this post


Link to post
Share on other sites

Cierto, es una buena estrategia la verdad. La pondré en marcha a ver como sale jejeje.

Muchas gracias Pioj!

 

Share this post


Link to post
Share on other sites

En mis tiempos habia un programa muy ludico que se llamaba barrio sesamo ... hoy dia en la tele solo hacen programacion de violencia, asi esta el mundo loco perdido xDD te lo intentare explicar como lo harian en el programa anteriormente mencionado ^.^

Tenemos dos entidades : una que llamaremos "a" y tendra una longitud de 5 unidades y se encuentra en la posicion 0, y otra entidad que llamaremos "b" y tendra una longitud de 8 unidades anclada en la posicion 6. Si ambos objetos estan a la misma altura, y suponiendo que el punto de anclaje (pivote) este en el centro de los cuerpos solo hace falta una simple operacion matematica para saber si estan tocando ...

distancia = (b.posicion - b.longitud / 2) - (a.posicion + a.longitud / 2)

Traduciendo las variables con las entidades que se han descrito anteriormente, tendriamos que ...

distancia = (6 - 8 / 2) - (0 + 5 / 2) = 2 - 2.5 = -0.5

Una distancia igual a -0.5, es decir negativa, que significaria que los dos objetos estan tocando. Para saber la distancia minima del objeto "b" respecto al objeto "a" con intencion de que no se superpongan solo hay que pasar la variable b.posicion al otro lado de la ecuacion.

b.posicion = (a.posicion + a.longitud / 2) + (b.longitud / 2)

b.posicion = (0 + 5 / 2) + (8 / 2) = 2.5 + 4 = 6.5

Con lo que se puede descubrir que la posicion minima a la que debe estar "b" para que no se superponga con "a" es 6.5 unidades. Una posicion mas cercana hara que se superpongan, y una posicion mayor hara que se alejen ...

P.D. Que triste me siento explicando eso xDDD :huh::huh::huh::huh:

Share this post


Link to post
Share on other sites

Jajajaja gracias Arthure!

Sí, he entendido lo que me has explicado, espero que me sea de utilidad. Yo veía ese programa tan lúdico llamado Barrio Sésamo xD. Don Pimpon forever!

Saludos

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...