| Crear detectores invisibles sin añadir sprites adicionales | |
|
|
Autor | Mensaje |
---|
matriax Experto
Reputación : 67 Mensajes enviados : 473 Premios :
| Tema: Crear detectores invisibles sin añadir sprites adicionales Mar Ago 11, 2015 4:34 am | |
| Hasta ahora creaba un sprite para cada cosa en la que al pisarla te dijera algo sobre el objeto o para realizar una determinada accion. Para el juego que estoy haciendo para la #gbjam he elegido hacer uno tipo RPG a lo zelda, y claro para el tema de entrar en casas, cuevas etc... no me gustaba la idea de tener creados decenas de sprites que solo se iban a utilizar para una cosa y tenerlos por ahi molestando encima de los objetos y demas. Asi que probando cosas he descubierto esto, que no se si hay una forma mas facil o estoy reinventando la rueda y ya todo el mundo lo sabia pero no he encontrado nada, todos los ejemplos y post comentan lo de crear un sprite invisible como detector o separar el grafico de la puerta del resto del grafico y usarlo como detector. Lo que hago es esto: Por defecto un sprite viene con su ImagePoint(0) que es el origin. Yo he creado otro llamado "entry" que viene a ser el ImagePoint(1) y lo he colocado en la puerta(parte inferior izquierda). Luego juego con las coordenadas para crear una zona imaginaria que funciona como colision. De esta forma cuando el personaje colisiona y este entre esas coordenadas X/Y dentro del grafico usando el ImagePoint(1) creado como referencia lanza la accion. Por lo que si tienes un sprite grande y quieres realizar acciones segun la posicion del personaje respecto a ese objeto creas tantos ImgePoints como quieras y listo con su correspondiente zona de accion. --- De hecho tal vez se podria hacer sin definir la zona, o mejor dicho definir la zona solo una vez que afecte a todos lo ImagePoints llamados "entry" o lo que sea creando un cuadrado/rectangulo y asi simplemente crear el imagepoint en el editor del sprite y colocarlo donde se quiere que tenga efecto y muchisimo mas comodo pero hasta ahi ya no llego, en caso de que se pueda hacer claro | |
|
| |
Zonacas Super-Moderador
Reputación : 558 Mensajes enviados : 2871 Premios :
| Tema: Re: Crear detectores invisibles sin añadir sprites adicionales Miér Ago 12, 2015 3:06 am | |
| Eso de crear varios puntos, mola
Imagino que así ahorras memoria, tendrías que medir el impacto en la memoria , porque igual poner muchas condiciones tiene mayor impacto en la velocidad que tener un sprite colisionador
por otro lado no había mascaras de colisión en Construct 2?
| |
|
| |
matriax Experto
Reputación : 67 Mensajes enviados : 473 Premios :
| Tema: Re: Crear detectores invisibles sin añadir sprites adicionales Miér Ago 12, 2015 4:13 am | |
| Si claro, pero si metes una casa, la mascara de colision es toda la casa donde va a colisionar el personaje. Solo hay una mascara de colision por frame. O a lo mejor hay una forma de crear diferentes mascaras de colision y estoy yo aqui haciendo el tonto para variar . ¿Mataguiris? | |
|
| |
mataguiris Experto
Reputación : 63 Mensajes enviados : 498 Premios :
| Tema: Re: Crear detectores invisibles sin añadir sprites adicionales Miér Sep 09, 2015 6:36 am | |
| No había visto este hilo, pero no termino de entenderlo bien, estoy un poco espeso No es más fácil crear un sprite invisible que siga al player y usarlo para todo eso??? | |
|
| |
matriax Experto
Reputación : 67 Mensajes enviados : 473 Premios :
| Tema: Re: Crear detectores invisibles sin añadir sprites adicionales Miér Sep 09, 2015 6:47 am | |
| Y habiendo un sprite grande de una casa con diferentes entradas como le indicas porque sitios puedes acceder? Le pones un sprite al pj, ok, pero ademas tendras que indicar de alguna forma que cuando ese sprite colisione sobre X parte del sprite acceda y estamos en las mismas, No? o me estoy perdiendo algo XD.
Entiendo que le metas un detector al personaje, pero luego tendras un "cuando el personaje colision con X cosa". Lo malo es que con un dibujo de una casa con 4 entradas ¿Como indicas esos accesos sin usar sprites/detectores? Pues yo lo he hecho asi.
Al igual estas queriendo decir otra cosa o una solucion mas simple pero si te he entendido bien, con poner un detector al personaje estamos en las mismas, si es solo eso.
| |
|
| |
mataguiris Experto
Reputación : 63 Mensajes enviados : 498 Premios :
| Tema: Re: Crear detectores invisibles sin añadir sprites adicionales Miér Sep 09, 2015 6:57 am | |
| Ahhhhh ok, ahora entiendo lo que buscas Efectivamente no se pueden poner dos mascaras de colisión a un mismo sprite, y la forma en la que lo has hecho pues si te funciona por que no usarla, la bueno de todo esto es que siempre hay varias formas de hacer las cosas, aunque coincido con Zonacas, yo lo haría con detectores, y no hace falta tener un montón de sprites para cada entrada, con un mismo sprite duplicado las veces que te haga falta, le pones una varible de texto al sprite, y donde vaya cada sprite el nombre en la variable será donde se va a acceder, entonces solo hay que decir, que si colisiona con ese sprite, y los subeventos que haga falta, si la variable es "comedor" pues que vaya al layout correspondiente, y así con cada uno de los valores de la variable del sprite. De esta forma, con un mismo sprite tienes todos los detectores que quieras y ahorras código, en construct las copias de un mismo sprite pueden tener diferentes valores en las variables, no hay problemas en eso. No tengo muy claro que se entienda lo que quiero decir | |
|
| |
elpupas7 Administrador
Reputación : 1243 Mensajes enviados : 3982 Premios :
| Tema: Re: Crear detectores invisibles sin añadir sprites adicionales Miér Sep 09, 2015 10:22 am | |
| Lo habitual y a mi entender lo mas práctico es usar un detector duplicado las veces que se quiera. Cada uno es una instancia, que en el Construct2 es fácilmente diferenciable del resto.
Ahora bien, quizás uno no quiera que se dispare la acción en función de la posición del PJ a la hora de la colisión o bien quiere acciones distintas en función de la posición del PJ. En este caso hacer uso de distintos puntos (image points) de colisión alrededor del PJ puede servir de ayuda.
Las zonas de colisión pueden ser adecuadas en algún caso particular pero hacerlo por sistema es un engorro que entiendo no necesario.
Me doy cuenta que no he dicho nada nuevo. En fin... | |
|
| |
matriax Experto
Reputación : 67 Mensajes enviados : 473 Premios :
| Tema: Re: Crear detectores invisibles sin añadir sprites adicionales Miér Sep 09, 2015 11:08 am | |
| La zona la haces una vez y te sirve para la mayoria. Si tienes una puerta muy grande o lo que sea la modificas cambiando la X o la y. Solo metes mas imagepoints y listo. A la hora de mover objetos solo tengo que mover la casa pulsando en el objeto y dejarlo donde quiero. En caso de poner varios sprites de colision tienes que coger la casa junto los demas sprites yendo con cuidado de no coger alguna otra cosa mas o dejarte alguno. Ademas a la hora de visualizar el mapa es "mas limpio" que tener detectores por ahi desperdigaos. Supongo que es como todo, cosa de gustos y como cada uno trabaja mejor . | |
|
| |
elpupas7 Administrador
Reputación : 1243 Mensajes enviados : 3982 Premios :
| Tema: Re: Crear detectores invisibles sin añadir sprites adicionales Miér Sep 09, 2015 11:50 am | |
| Cierto sobre el tema de los gustos y tal.
Me parece una buena idea el evitar detectores, todo queda mas limpio. Y para lo de mover objetos aún con mayor razón.
En resumen, la cuestión es definir tantos puntos (image points) sean necesarios y en cada uno delimitar una zona (coordenadas relativas) que servirá de colisión.
La cuestión es: ¿ Tendrás que poner una condición para cada una de estas colisiones, no ? Cuando el PJ pise una zona en concreto, tal acción.
De ser así, quizás colocar en tiempo de ejecución los detectores en todos esos puntos podría arreglar algo el tema. Pero aquí surge el problema de como distinguir luego un detector de otro. Se me antoja que deben estar creados de antemano y en tiempo de ejecución ir colocándolos.
Tema interesante en todo caso. | |
|
| |
Zonacas Super-Moderador
Reputación : 558 Mensajes enviados : 2871 Premios :
| Tema: Re: Crear detectores invisibles sin añadir sprites adicionales Vie Sep 11, 2015 4:36 am | |
| Ahora que lo pienso en Fusión recuerdo hay una condición (en pick or count) para detectar el numero de actives en una determinada zona (cuadrada) al fin y al cabo es como si fuera una mascara de colisión no? jijiji me extraña que Construct 2 no tenga eso | |
|
| |
Contenido patrocinado
| Tema: Re: Crear detectores invisibles sin añadir sprites adicionales | |
| |
|
| |
| Crear detectores invisibles sin añadir sprites adicionales | |
|