Jump to content
UnitySpain
Sign in to follow this  
NicolasProner

Duda sobre canvas y Colliders..

Recommended Posts

Hola, bueno antes que nada les agradezco por tomarse el tiempo de leer el post, me presento: Soy Nicolas tengo 16 años y estoy en la programacion hace mas de 2 años en c# Unity.

Me tope con varios problemas a lo largo de un juego que estoy haciendo pero siempre logre solucionarlos.

Pero tengo una duda de el uso de canvas + Colliders2D.

Les explico la duda:

 

Resulta que tengo un canvas con una imagen, entonces como en canvas ahora para que se redimencione tenes que colocarles los triangulitos.. 

Como ven en la imagen les marque donde tengo los triagulitos en rojo..

Hasta acá todo bien, la imagen se redimenciona perfectamente ya que es para android y esto es muy necesario.

Pero, pero (Siempre hay un pero jaja) Me tope con que necesito poner un collider poligonal2D sobre la linea del dibujo pero cuando lo coloco y lo formo, al redimencionar la imagen el collider se descoloca

Ahora pueden ver otra imagen donde marque con verde donde iría mas o menos el collider 2D pero estas lineas se desacomoda (Es decir el trazo del dibujo no queda calibrado con el collider) Entonces mi pregunta es:

Hay alguna manera en que el collider se redimencione junto con las imagenes? o de alguna manera? Muchas Gracias.. Un saludo.

Sin título.png

Sin título.png

Share this post


Link to post
Share on other sites
1 hour ago, MrCoin said:

Antes de responder a tu duda, ¿me podrías decir para que estas usando el collider en un canvas?.

Hola jajaa si es algo raro, pero a ver como te podría explicar. Lo que quiero lograr en la "aplicacion" es que el jugador pinte sobre el canvas (Asi como un paint) Pero que no se pueda salir de los limites que tiene el dibujo (Lo marque en verde lo que serian los limites que quiero para el dibujo).

Por eso digo de poner un collider en las lineas del canvas entonces luego pongo un raycast que cuando detecte ese collider sobre la linea no se pueda pintar mas. Con esto logro hacer el sistemita que quiero ya que seria poder pintar sin pasarse de la linea. Si no entiendes solo dime que te lo explico un poco mas detallado.

Si estoy mal encaminado me gustaria saber como podría lograr esto. 

Gracias y Saludos..

Share this post


Link to post
Share on other sites

Lo que yo haría seria crear un gameobject padre donde están todos los colliders y redimensionarlo con un script en función de la escala final de la pantalla en tiempo de ejecución.

No obstante, si lo he entendido bien yo personalmente lo haría de otra forma:

Crearía capas independientes en función de las piezas del dibujo. Puedes crearlas a mano o puedes crear un algoritmo que genere esas capas de forma procedural a raiz de una imagen en blanco y negro. Sea como sea, al crear estas capas independientes tienes control de ellas a través de EventSystem. Si te fijas bien, cuando creas un elemento de interfaz, se crea un objeto llamado EventSystem que tiene un script con este mismo nombre. Esta clase, EventSystem, se encarga de convertir los elementos de un cambas en objetos interactivos. Ademas esta clase te provee información sobre el evento en cuestión. Creo que con eso tienes información de sobra para lo que quieres hacer. 

Investigarlo (porque aun no he entendido del todo que quieres hacer) y si te es útil pues adelante. 

Espero que te haya sido de ayuda, mucha suerte con lo tuyo.

 

Share this post


Link to post
Share on other sites

Usted me dice de dividir el dibujo en varias capas (Las ruedas de un lado, las puertas de otro lado) todo pero en diferentes capas hablo de un auto en este ejemplo, lo que no entendí es la parte de el algoritmo si usted me podría explicar un poco mas acerca de el algoritmo que aria que automáticamente se forme el coche con sus respectivas capas. Si podría por favor explicarme un poco mas esa parte de verdad se lo agradecería.

On 31/8/2016 at 12:40, MrCoin said:

Lo que yo haría seria crear un gameobject padre donde están todos los colliders y redimensionarlo con un script en función de la escala final de la pantalla en tiempo de ejecución.

No obstante, si lo he entendido bien yo personalmente lo haría de otra forma:

Crearía capas independientes en función de las piezas del dibujo. Puedes crearlas a mano o puedes crear un algoritmo que genere esas capas de forma procedural a raiz de una imagen en blanco y negro. Sea como sea, al crear estas capas independientes tienes control de ellas a través de EventSystem. Si te fijas bien, cuando creas un elemento de interfaz, se crea un objeto llamado EventSystem que tiene un script con este mismo nombre. Esta clase, EventSystem, se encarga de convertir los elementos de un cambas en objetos interactivos. Ademas esta clase te provee información sobre el evento en cuestión. Creo que con eso tienes información de sobra para lo que quieres hacer. 

Investigarlo (porque aun no he entendido del todo que quieres hacer) y si te es útil pues adelante. 

Espero que te haya sido de ayuda, mucha suerte con lo tuyo.

 

 

Share this post


Link to post
Share on other sites

Estoy de acuerdo con la idea de @MrCoin, de separar el dibujo en varias piezas o capas, para facilitar la creación de los Colliders. De esta forma, te aseguras que siempre se cumpla la condición de pintar dentro del collider, por ejemplo...

Share this post


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

×
×
  • Create New...