Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Movimientos en 2d, podría ser una bola

Iniciado por Vandalism, 20 de Mayo de 2010, 03:22:50 PM

« anterior - próximo »

Vandalism

Hola, estoy un poco liado con el tema de mover una bola en 2d.

Imaginen una bola en cierta parte de la pantalla con coordenadas (x, y), luego quiero que cuando presiono un clic en algun lugar de la pantalla (x', y'), la bola se desplace hacia allí con cierta velocidad.

Estuve leyendo sobre vectores y aparentemente lo de la velocidad lo logro con un escalar, lo que no me ha quedao claro es como hago para que la bola se dirija a la posición (x', y'), o sea de algun modo debo calcular la dirección de la bola cada vez que se hace clic, y luego multiplicar por el escalar (es una velocidad constante).

Estoy trabajando con SDL, a pesar de que ello no interesa en este tema, pero tal vez alguien sepa de algun link o algun tutorial que me pueda servir.

Agradezco si alguien puede echar una mano

Buffon

posBola = {bolaX, bolaY}
posClick = {clickX, clickY}

vectorDirectorBolaAClick = { clickX - bolaX, clickY - bolaY}
normalizar(vectorDirectorBolaAClick);
multiplicar(vectorDirectorBolaAClick,velocidad);

----

Supongo que el movimiento continuo ya lo estás haciendo bien.

Vandalism

Muchas gracias.

Ahora, una duda que me queda de esto, es por qué se normaliza el vector previo a multiplicarlo por el escalar de velocidad?

He estado leyendo varios artículos en la web sobre vector unitario (normalizado), pero no encuentro el "por qué" de normalizar el vector antes de "incrementar su módulo" para darle velocidad.

Seguiré leyendo, pero agradezco si alguien puede darme su opinión de eso.

Buffon

Para que la velocidad siempre sea la misma.

imagina que tienes el objeto en el punto 0,0 y pinchas en el 3,3 o en el 7,7.

el vector resultante no sería el mismo y al aplicarle la velocidad se dispararía en ambos casos, así se obtiene un vector unitario (módulo 1) y se le multiplica la velocidad (así tiene a cada paso del frame la cantidad de movimiento deseada siempre).

PD: no se si me expliqué bien.

Vandalism

Se ha entendido a la perfeccion... gracias!!!

tamat

si no lo normalizas la velocidad sería proporcional a lo lejos que está el raton, lo que tampoco estaría mal
Por un stratos menos tenso






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.