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.
[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]
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?
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]
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)