Septiembre 25, 2014, 08:19:42 PM Ultima modificación: Septiembre 28, 2014, 06:34:11 PM por mamaffia
Hola a todos, quisiera saber si hay alguna manera de mover un objeto con el dedo o con mouse left que para mi caso es lo mismo en una room física.

Usa las variables "mouse_x" y "mouse_y".
Por ejemplo: x=mouse_x y=mouse_y hará que el objeto se ponga en las coordenadas del ratón.


Gracias por responder... yo lo había hecho así con las variables mouse_x y mouse_y pero al habilitar la room física me dejó de funcionar. Voy a probar otra vez a ver si puedo hacer que funcione.

No amigos, cuando habilito la room física no funciona, ni con las variables ni con move towards. Si alguien sabe como se hace...... se agradecee

Debes aplicar una fuerza al objeto, de esta forma:
[gml]
fuerza = valor; //magnitud de la fuerza
angulo = point_direction( x,y, mouse_x,mouse_y ); //angulo en que se aplica la fuerza

xforce = lengthdir_x( fuerza, angulo );
yforce = lengthdir_y( fuerza, angulo );

physics_apply_force( x,y, xforce,yforce );
[/gml]
El valor de la fuerza tiene que ser ajustado cuidadosamente, en base a el tamaño del objeto, a su densidad y a la relación entre pixeles y metros.

#6 Septiembre 26, 2014, 05:10:16 AM Ultima modificación: Septiembre 26, 2014, 05:25:39 AM por penumbra
Las funciones normales de movimiento así como las variables de instancia "normales"  (x, y, gravity, speed, etc, etc.) NO FUNCIONAN ni tiene sentido usarlas cuando estás trabajando con el motor Box2D, el mismísimo manual lo aclara. Lo que quieres hacer comúnmente se resuelve usando una característica del engine de física. Te doy una pista:

Joints


Clamud, agradezco que te hayas tomado la molestia de hacer el código, obviamente funciona pero no es exactamente lo que necesito, con el código el objeto persigue al puntero pero si le pongo la fuerza necesaria para que lo siga rápido se desestabiliza y así y todo nunca va a la velocidad real del puntero.

Penumbra, nunca usé las funciones joints pero sí sé que existen y ya que lo dices voy a averiguar bien de que se trata a ver si soluciona mi problema, luego cuento como me fue. Saludoss

Tienes que crear una unión (hay de distintos tipos) para que el objeto quede ligado al cursor y lo siga. Al soltar el botón del ratón, destruyes la unión.

Bueno gente, gracias por las respuestas, francamente no puedo lograrlo todavía, seguro estoy haciendo algo mal, estoy tratando de usar joint, cree un objeto invisible (con fisicas) que siempre esta bajo el puntero del mouse y trato de conectarlo mediante physics_joint_distance_create al objeto que quiero que se mueva pero no hay caso, sigue ahí plantado sin moverse. Si alguien tiene un ejemplo se lo voy a agradecer, mientras sigo averiguando sobre el tema.

disculpen si me salgo pero... alguien me explica a qué se refiere con eso de room "física"? :/
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]


Gracias a todos, finalmente terminé usando el código que amablemente dejó en este post Clamud, hay que buscarle la fuerza exacta y configurarlo on la densidad, fricción, etc, pero si se hace con paciencia se puede lograr el efecto que uno desee. Muchas gracias, otro tema resuelto.