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