Estoy haciendo una ruleta con giro, va todo bien pero quiero implementar un evento que al deslizar el dedo hacia un determinado lado, la ruleta gire hacia un lado u otro.

Y he creado el giro manual, pero tengo un problema, al girar el objeto con el dedo y soltarlo se para, yo quiero que el objeto tenga una velocidad determinada por la fuerza del giro del dedo. El codigo que he empleado es este:
image_angle = point_direction(x, y, mouse_x, mouse_y);

La velocidad=distancia/tiempo y en base a esa formula hice un ejemplo, donde la distancia es igual a la distancia entre el punto donde se presiona con el dedo y el punto donde se deja de presionar, el tiempo es el numero de steps entre esos dos momentos.
[gml]
//CREATE

mx=0
my=0
velocidad=0
distancia=0
tiempo=0
[/gml]
[gml]
//STEP

if velocidad=0
{
  if mouse_check_button_pressed(mb_left)
     {
      tiempo=0
      distancia=0
      velocidad=0
      mx=mouse_x
      my=mouse_y
     }

  if mouse_check_button(mb_left) { if (mx!=mouse_x and my!=mouse_y) {tiempo+=1} }

  if mouse_check_button_released(mb_left)
     {
      distancia=round(point_distance(mx, my, mouse_x, mouse_y))
      if tiempo>0 {velocidad=round(distancia/tiempo)*sign(mx-mouse_x)}
     }
}

velocidad=velocidad*0.98
if abs(velocidad)<0.1 {velocidad=0}

image_angle+=velocidad
[/gml]
No es perfecto pero funciona.

Cita de: 3dgeminis en Agosto 05, 2018, 07:47:58 PM
La velocidad=distancia/tiempo y en base a esa formula hice un ejemplo, donde la distancia es igual a la distancia entre el punto donde se presiona con el dedo y el punto donde se deja de presionar, el tiempo es el numero de steps entre esos dos momentos.
[gml]
//CREATE

mx=0
my=0
velocidad=0
distancia=0
tiempo=0
[/gml]
[gml]
//STEP

if velocidad=0
{
  if mouse_check_button_pressed(mb_left)
     {
      tiempo=0
      distancia=0
      velocidad=0
      mx=mouse_x
      my=mouse_y
     }

  if mouse_check_button(mb_left) { if (mx!=mouse_x and my!=mouse_y) {tiempo+=1} }

  if mouse_check_button_released(mb_left)
     {
      distancia=round(point_distance(mx, my, mouse_x, mouse_y))
      if tiempo>0 {velocidad=round(distancia/tiempo)*sign(mx-mouse_x)}
     }
}

velocidad=velocidad*0.98
if abs(velocidad)<0.1 {velocidad=0}

image_angle+=velocidad
[/gml]
No es perfecto pero funciona.

Muchas gracias por responder, es bueno pero para lo que estoy haciendo no me sirve. La idea es buena pero a veces cuando le doy para un lado, la ruleta se me va a otro, ademas cuando la ruleta gira, no me deja girarla de nuevo hasta que la velocidad no llegue a 0. Alguna solucion? muchas gracias amigo