supongamos quieres hacer colisionar una granada, esta tiene una animacion donde cada frame la onda expansiva va creciendo, por lo que en cada frame la mascara de colision deberia de ser diferente, entonces es posible hacer eso por default con GMS2 o  a fuerza tengo que meterme al evento step, checar el frame de la colision y medir la dimension del mismo para saber si se esta colisonando, es decir tendria que hacer 9 colisiones diferentes para un sprite de 9 cuadros?
Es Mejor No Saber Porque Funciona, Que Saber El Porque No Funciona...
Tienes alguna duda con "Game Design" o de videojuegos en general, contactamente mas facil en twitter @pavulzavala

Podrias hacer una formula de ( Distancia * Image_index ) una idea la otra es colocar las versiones del sprite como distancia en una lista o un array cual te parezca y recorrer de una en una hasta llegar al final de esta con algo asi ( Distancia[floor(Image_index)] )

Pd: Solo son ideas piensa alguna no todos los juegos son perfectos asi que no te preocupes por hacer colisiones exactas.  ;)

esaba pensando meter valores en un arreglo y segun el frame checar ese arreglo dada la colision, gracias, ya vere como aplicar eso que mencionas y tienes razon no todas las colisiones son perfectas pero no quiero que dispares a un arbol y se muera una criatura  XD
Es Mejor No Saber Porque Funciona, Que Saber El Porque No Funciona...
Tienes alguna duda con "Game Design" o de videojuegos en general, contactamente mas facil en twitter @pavulzavala