miércoles, 14 de noviembre de 2018
Hijos de Camelot: Máscara de Colisión
Máscara de colisión
Una máscara de colisión es un gráfico que representa la zona "sensible" de un objeto (un jugador, un enemigo, una pared, una puerta). La máscara no tiene que ser igual que el sprite del objeto, de hecho no conviene que lo sea (el motivo lo vemos más abajo).La máscara se usa para detectar cuando dos objetos chocan, por ejemplo si al jugador le ha alcanzado un proyectil, o bien si está chocando con una pared.
Por defecto GM usa una máscara equivalente a un recuadro que cubre todo el sprite del objeto, por tanto la máscara puede ser realmente grande si el sprite es irregular, además esto significa un desperdicio de CPU, mucho mejor utilizar formas simples como una máscara rectangular o en forma de elipse, para evitar problemas cuando el sprite tenga formas irregulares.
Por ejemplo, si tenemos el sprite de un esqueleto
La máscara por defecto es la siguiente (sombreado):
Máscara del Player
La máscara será manual, de tipo (shape) rectangular, desde la cabeza hasta las rodillas por ejemplo.En cada sprite del objeto, para caminar, correr, etc hay que asegurarse de que la máscara está en manual y adecuar una máscara del mismo tamaño que la inicial, cambiando su posición según el sprite pero manteniendo siempre ese tamaño y forma de máscara.
La única excepción en mi juego será el sprite de esquivar, que será un simple píxel situado a los pies del personaje y un poco por delante, de forma que nos aseguramos de que al esquivar, el player es prácticamente invulnerable, y de que no se quede atascado en ninguna pared.
Si usáramos una máscara diferente para diferentes estados (corriendo, quieto, herido, esquivando, etc), con diferentes tamaños y formas, puede ocurrir que haya un cambio justo cuando estemos cerca p.e. de una pared, si la máscara cambia, puede quedarse el personaje "atascado"
Para evitar esto, he cambiado la máscara a un óvalo que se ajuste a la zona donde queremos que el jugador dispare:

Otras máscaras: Enemigos y Mobiliario
En general, máscara automática. Pero teniendo en cuenta lo que contamos a continuación.Cuando no usar máscara automática
Si tenemos un sprite de este tipo (esqueleto gigante):
La máscara de colisión por defecto es cuadrada, es decir, incluye las partes transparentes(cuadrados grises), por tanto disparando a las zonas transparentes también estaríamos haciendo daño al esqueleto.
No similar posts
Suscribirse a:
Enviar comentarios
(
Atom
)
No hay comentarios :
Publicar un comentario