arrastar grafico con el mouse !

Started by emov2k4, July 18, 2012, 03:59:16 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

emov2k4

Hola,
Tengo un gráfico en pantalla y quiero arrastrarlo con el mouse... el problema es que al hacer click y darle las coordenadas del mouse, este se mueve a su punto de control dando un movimiento que no me gusta... intente asignar el punto de control del mouse  pero tampoco me resulta y pega un salto extraño.

alguien ha hecho algo parecido ?

Saludos

SplinterGU

al hacer el click tenes que calcular el delta inicial de x e y del mouse con respecto al grafico... y usar ese delta en cada movimiento hasta soltar el boton.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

emov2k4


SplinterGU

no tengo ejemplos... lo hice alguna vez, pero no tengo ahora ejemplos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

emov2k4

ahh ya se cual era mi error, lo acabo de lograr, a ver si en un rato más subo un ejemplo , en que parte del foro lo dejo?

Kloppix

Pues no seria mala idea una sección del foro para ejemplos de programación. Tenía varios y los perdí :(

emov2k4

Quote from: Kloppix on July 18, 2012, 07:30:08 PM
Pues no seria mala idea una sección del foro para ejemplos de programación. Tenía varios y los perdí :(

excelente idea !!

La momia que fuma

Hombre, para estas cosas, ya sirve el subforo de recursos, no?

Mr Matsusaka

Yo lo hagos asi, aunque no recuerdo bien las funciones de Bennu para deteccion del raton.


El primer frame cuando pulsamos el raton, cojo la diferencia en x e y entre el raton y el personaje


int iAnclaX = prota.x - mouse.x;
int iAnclaY = prota.y - mouse.y;


y a partir de ahi y mientras tengamos el boton del raton pulsado:


prota.x = mouse.x + iAnclaX;
prota.y = mouse.y + iAnclaY;


y ya

FreeYourMind

Aprovecho el hilo para preguntar, actualmente muevo un muñeco prota con el raton por pantalla usando esto:

if(fget_dist(mouse.x, mouse.y, x, y) > 5)
  xadvance(fget_angle(x, y, mouse.x, mouse.y), fget_dist(mouse.x, mouse.y, x, y) / 4);
  graph++;
end

esto hace qu si pincho en un punto afastado del muñeco, este corre rapidamente hacia estar sobre ese punto.


Lo que necesito es que el muñeco tenga un gráfico o animación distinta (o cambiar la flag del gráfico) segun la direccion donde lo muevo, o sea, un gráfico distinto para cada una de las 8 direcciones genéricas de movimiento, por ejemplo que si va hacia la derecha este miré hacia la derecha.


Mr Matsusaka

Quote from: FreeYourMind on July 21, 2012, 01:15:39 PM
Aprovecho el hilo para preguntar, actualmente muevo un muñeco prota con el raton por pantalla usando esto:

if(fget_dist(mouse.x, mouse.y, x, y) > 5)
  xadvance(fget_angle(x, y, mouse.x, mouse.y), fget_dist(mouse.x, mouse.y, x, y) / 4);
  graph++;
end

esto hace qu si pincho en un punto afastado del muñeco, este corre rapidamente hacia estar sobre ese punto.


Lo que necesito es que el muñeco tenga un gráfico o animación distinta (o cambiar la flag del gráfico) segun la direccion donde lo muevo, o sea, un gráfico distinto para cada una de las 8 direcciones genéricas de movimiento, por ejemplo que si va hacia la derecha este miré hacia la derecha.


no estoy seguro pero creo que seria asi:


int iAnimacionIndex = xadvance(fget_angle(x, y, mouse.x, mouse.y), fget_dist(mouse.x, mouse.y, x, y) / 4) / 45000;

Esto te daria un valor de 0 a 7, que podrias usar para determinar que animacion usar;

FreeYourMind

Muchas gracias lo probare en casa

BlySntK

Quote from: Mr Matsusaka on July 21, 2012, 02:45:07 PM
Quote from: FreeYourMind on July 21, 2012, 01:15:39 PM
Aprovecho el hilo para preguntar, actualmente muevo un muñeco prota con el raton por pantalla usando esto:

if(fget_dist(mouse.x, mouse.y, x, y) > 5)
  xadvance(fget_angle(x, y, mouse.x, mouse.y), fget_dist(mouse.x, mouse.y, x, y) / 4);
  graph++;
end

esto hace qu si pincho en un punto afastado del muñeco, este corre rapidamente hacia estar sobre ese punto.


Lo que necesito es que el muñeco tenga un gráfico o animación distinta (o cambiar la flag del gráfico) segun la direccion donde lo muevo, o sea, un gráfico distinto para cada una de las 8 direcciones genéricas de movimiento, por ejemplo que si va hacia la derecha este miré hacia la derecha.


no estoy seguro pero creo que seria asi:


int iAnimacionIndex = xadvance(fget_angle(x, y, mouse.x, mouse.y), fget_dist(mouse.x, mouse.y, x, y) / 4) / 45000;

Esto te daria un valor de 0 a 7, que podrias usar para determinar que animacion usar;

Este código también serviría para un juego tipo point & click? Es decir, tengo al personaje, le doy a la opción de andar, selecciono en el mapa el lugar y surge el movimiento con la animación pertinente hasta llegar al lugar?
Esnucándote contra la pared no sé si conseguiré mucho, mejor lo pruebo y salímos de dudas ^_^
-------------------------------------------------------
Blaisantka Games > (Official developer web site)

FreeYourMind

exactamente el proposito es ese, ya la velocidad de movimiento que quieras la ajustas despúes.

FreeYourMind

Quote from: Mr Matsusaka on July 21, 2012, 02:45:07 PM
Quote from: FreeYourMind on July 21, 2012, 01:15:39 PM
Aprovecho el hilo para preguntar, actualmente muevo un muñeco prota con el raton por pantalla usando esto:

if(fget_dist(mouse.x, mouse.y, x, y) > 5)
  xadvance(fget_angle(x, y, mouse.x, mouse.y), fget_dist(mouse.x, mouse.y, x, y) / 4);
  graph++;
end

esto hace qu si pincho en un punto afastado del muñeco, este corre rapidamente hacia estar sobre ese punto.


Lo que necesito es que el muñeco tenga un gráfico o animación distinta (o cambiar la flag del gráfico) segun la direccion donde lo muevo, o sea, un gráfico distinto para cada una de las 8 direcciones genéricas de movimiento, por ejemplo que si va hacia la derecha este miré hacia la derecha.


no estoy seguro pero creo que seria asi:


int iAnimacionIndex = xadvance(fget_angle(x, y, mouse.x, mouse.y), fget_dist(mouse.x, mouse.y, x, y) / 4) / 45000;

Esto te daria un valor de 0 a 7, que podrias usar para determinar que animacion usar;

No funciona:


if(fget_dist(mouse.x, mouse.y, x, y) > 5)
  valor_adv = xadvance(fget_angle(x, y, mouse.x, mouse.y), fget_dist(mouse.x, mouse.y, x, y) / 4);
  graph++;
  //play_wav(Snd_Left, 0);
end

valor_anim = valor_adv / 45000;

say(valor_adv);

valor_adv es siempre = 1, y valor_anim es siempre 0