Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Radix62 en Diciembre 08, 2019, 01:52:31 AM

Título: Quiero solucionar el Error de Shake Y Zoom A la Vez
Publicado por: Radix62 en Diciembre 08, 2019, 01:52:31 AM
estoy Trabajando en Mumu's Land y tengo problemas con el zoom y shake



como no se quiere mostrar aqui un link
https://www.youtube.com/watch?v=-7BZfRPRGUA

Alguien sabe como solucionarlo?

tengo aqui un GMK de GM8
Para que lo vean

tiene el mismo codigo de mi juego hecho en GMStudio
Título: Re:Quiero solucionar el Error de Shake Y Zoom A la Vez
Publicado por: BssString en Diciembre 12, 2019, 04:09:36 AM
Hola Radix62

Al parecer el error está en la configuración de tu View, en el objeto que sigues en la room.
Cuando seteas un "object follow" a la view, eso hace que Game Maker sobre-escribe cualquier modificación en la view_x / view_y que tú hagas, así que no verás ningún temblor.

Mi sugerencia es que NO uses en el objeto CAMERA la línea:
view_object = self
Para que la configuración de Game Maker no sobreescriba la tuya.

Para hacer que el shake funcione sin centrar la cámara, te sugiero usar variables para el movimiento en X y en Y.
Coloca esta línea al principio del Step event del objeto CAMERA (antes de que ejecutes el Zoom y el Shake o incluso puedes usar el evento BEGIN STEP):
x_offset = 0
y_offset = 0

Eso crea 2 variables con valor 0 y en cada step vuelven a resetearse a valor cero.

En el Step del Shake, reemplaza el Shake actual:
view_xview[0] = random_range(view_xview[0]-4,view_xview[0]+4)
view_yview[0] = random_range(view_yview[0]-4,view_yview[0]+4)

Por un nuevo Shake que modificará las variables que has creado en un rango [ -4 ; 4 ]
x_offset = random_range(-4,+4)
y_offset = random_range(-4,+4)


Finalmente, en lugar de usar la configuración de View por defecto del Game Maker, centrarás manualmente la cámara al objeto CAMERA con este código:
Asegúrate de escribir esto al final del Step Event (después del Shake y el Zoom o si gustas puedes usar el evento END STEP)
view_xview[0] = x-(view_wview[0]/2) + x_offset
view_yview[0] = y-(view_hview[0]/2) + y_offset


Eso recreará el efecto de Shake y funcionará para cualquiera sea el Zoom que coloques.

Una última cosa, cuando termina el Shake, tu alarma 0 del objeto "CAMERA" resetea la posición de la View, elimina ese código porque ya no es necesario.
Ahora el Step event estará re-centrando la View en cada step según la coordenada x/y del objeto CAMERA, así que el reseteo de la view en el Alarm 0 es innecesario.

Saludos