Septiembre 23, 2017, 10:33:02 AM Ultima modificación: Septiembre 23, 2017, 07:47:50 PM por Naitsabes0
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.

#1 Septiembre 23, 2017, 11:13:01 AM Ultima modificación: Septiembre 23, 2017, 12:05:49 PM por NiuWeb
[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]
alaberga regué el café.

BA:STFW&RTFM

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.

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 :-\.

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.