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