Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Naitsabes0 en Septiembre 23, 2017, 10:33:02 AM

Título: Trampa péndulo[Solucionado]
Publicado por: Naitsabes0 en Septiembre 23, 2017, 10:33:02 AM
Es aquel mecanismo que cuando alcanza una cierta altura vuelve para llegar al otro lado con la misma fuerza, lo que permite que tenga un ciclo infinito moviendoce de un extremo a otro, teniendo esto en claro esto es lo que busco.

Tengo un mazo/palilla/palo con picos que debe moverse bajo estas condiciones.

-Rotara de su base que vendría siendo algo así, origen 16x16 de un tamaño de sprite de 128x32 algo que a la vista es así.
https://i.gyazo.com/85710cd735d1c41973b4150f7243291d.gif

-Se detendrá cuando alcance "X" punto para volver a otro punto "X", para ser mas preciso abarcara 180° grados de la parte inferior, en pocas palabras un péndulo.

-Debe hacer el ciclo infinito, es decir que que rotara en esos 180° grados de forma permanente, en este  caso comenzara en 0°/360° grados para llegar a los 180° en la parte inferior, para luego volver al inicio, así la amenaza estará en constate movimiento.

Lo que he considerado.

En Step tengo este código "image_angle=image_angle-3" que lo ara moverse de forma horaria por debajo, pero cuando alcance un valor de 180° grados su "image_angle=image_angle+3" para volver de forma anti-horaria por debajo, y para cuando su grado sea 0°/360°, este volverá nuevamente para hacer el ciclo infinito, pero si supiera como armar el código para que esto funcione así, no estaría preguntando esto  :D.
Título: Re:Trampa péndulo
Publicado por: bygdle en Septiembre 23, 2017, 11:13:01 AM
[gml]
///Evento create
tiempo = room_speed;
alarm[0] = tiempo;
angle_vel = 180/tiempo;
image_angle -= angle_vel;
[/gml]
[gml]
///Alarma 0
angle_vel *= -1;
alarm[0] = tiempo;
[/gml]
[gml]
///Step
image_angle -= angle_vel;
[/gml]
Título: Re:Trampa péndulo
Publicado por: Naitsabes0 en Septiembre 23, 2017, 12:26:17 PM
Cita de: NiuWeb en Septiembre 23, 2017, 11:13:01 AM
[gml]
///Evento create
tiempo = room_speed;
alarm[0] = tiempo;
angle_vel = 180/tiempo;
image_angle -= angle_vel;
[/gml]
[gml]
///Alarma 0
angle_vel *= -1;
alarm[0] = tiempo;
[/gml]
[gml]
///Step
image_angle -= angle_vel;
[/gml]
Lo he armado así para facilitarme la programación en el futuro.

CREATE
[gml]
///Evento create
tiempo = room_speed;
alarm[0] = tiempo;
angle_velocidad = 180/tiempo;
image_angle -= angle_velocidad;
[/gml]
ALARMA 0
[gml]
///Alarma 0
angle_velocidad *= -1;
alarm[0] = tiempo;
[/gml]
STEP
[gml]
///Velocidad
image_angle -= angle_velocidad;
[/gml]

Pero encontre un inconbeniente, carece del control de velocidad de rotacion o mejor, dicho esta programado para devolverse cuando aya pasado dicho tiempo, por dar un ejemplo asi se ve en juego.
(https://i.gyazo.com/028751fa0977936b6da426bb075f4189.gif)
Funciona bien, pero seamos honesto esta un poco fuera de control.
Lo que le cree fue esto
CREATE
angle_velocidad = 1;
Para controlar su velocidad, pero las cosas resultaron algo curiosas de ver :-\.
(https://i.gyazo.com/93f3a54318a7dfe7043e3fc3deea45e6.gif)
Fue entonces que me di cuenta que no detecta la ubicación para hacer el ciclo, sino que cambia la rotación cuando "X" tiempo ha pasado, o al menos es lo que infiero, entonces como debería controlar esto para que funcione de forma controlada?
Título: Re:Trampa péndulo
Publicado por: 3dgeminis en Septiembre 23, 2017, 07:35:44 PM
Asi te sera mas facil controlarlo
CREATE
[gml]
velocidad=2
angulo=0
cambio=1
[/gml]
STEP
[gml]
if angulo>180 or angulo<0 {cambio*=-1}
angulo+=(velocidad*cambio)

image_angle=-angulo
[/gml]
Título: Re:Trampa péndulo
Publicado por: Naitsabes0 en Septiembre 23, 2017, 07:47:09 PM
Cita de: 3dgeminis en Septiembre 23, 2017, 07:35:44 PM
Asi te sera mas facil controlarlo
CREATE
[gml]
velocidad=2
angulo=0
cambio=1
[/gml]
STEP
[gml]
if angulo>180 or angulo<0 {cambio*=-1}
angulo+=(velocidad*cambio)

image_angle=-angulo
[/gml]
Vaya cuanto tiempo, creo que no nos vemos desde ante ayer.

Pues tu código esta genial.
(https://i.gyazo.com/9447f228eefe0b32d7958843a947473a.gif)