PDA

Ver la versión completa : [Programación] Consejos sobre el movimiento del personaje



TRaFuGa
18/10/2008, 16:28
Bueno, pues tengo un proyecto en mente al que voy dando pinceladas de vez en cuando (cuando tenga algo visible subo una demo xDD) y tengo una pequeña suda sobre como mover al personaje.
El personaje está en la pantalla superior y se mueve de izquierda a derecha tocando con el styus en la tactil (según la coordenada X del stylus es la coordenada X del personaje), el problemilla/duda que tengo es el siguiente:
-Tal como lo tengo ahora (coordenada x del personaje igual a la coordenada x del stylus), si mueves el stylus de izquierda a derecha se ve perfecto (animacion del personaje avanzando), pero si por ejemplo, levantas el stylus y pinchas en cualquier lao, el personaje aparece en ese lado sin dar la sensacion de movimiento, y lo que queria hacer es que al pinchar en la tactil, el personaje se mueva a esa coordenada.
Ya he tocado algo pero no me ha resultado, he hecho lo siguiente:


sprtx= PA_GetSpriteX(1,0);

if (sprtx > movx)
{
if (sprtx != movx)
{
do
{
sprtx-=3;
} while (sprtx == movx);
}
}
else
{
if (sprtx != movx)
{
do
{
sprtx+=3;
} while (sprtx == movx);
}
}
PA_SetSpriteXY(1,0,sprtx, movy);
]
El problema de este codigo es, que cuando inicia el juego el sprite esta quietecito, pero cuando mueves por primera vez al sprite le dan "temblores" xDDDD vamos, que no está ni en un sitio ni en otro :P quería saber alguna forma de poder arreglar esto ya que no se me ocurre ninguna :P

pakoito
18/10/2008, 17:02
Borralo y hazlo de cero xDDD

efegea
18/10/2008, 17:02
Eso mismo he pensado yo xD

pakoito
18/10/2008, 17:12
sprtx= PA_GetSpriteX(1,0);
//Sacas el sprite, bien


if (sprtx > movx)
{
if (sprtx != movx)
//si es mayor siempre será distinto, esto sobra
{
do
{
sprtx-=3;
//repintado?
} while (sprtx == movx);
//hacer mientras sean iguales? no hemos dicho que son distintos?
}
}
else
{
if (sprtx != movx)
{
do
{
sprtx+=3;
//repintado?
} while (sprtx == movx);
//hacer mientras sean iguales? no hemos dicho que son distintos?
}
}
PA_SetSpriteXY(1,0,sprtx, movy);





sprtx= PA_GetSpriteX(1,0);

if (sprtx > movx)
{
do
{
if ((sprtx-movx) < 3) then sprtx-=(sprtx-movx);
else{
sprtx-=3;
}
//PINTADO

} while (sprtx != movx);
}
}
else
{
do
{
if ((movx-sprtx) < 3) then sprtx+=(movx-sprtx);
else{
sprtx+=3;
}
//PINTADO
} while (sprtx != movx);
}
}
PA_SetSpriteXY(1,0,sprtx, movy);
Ahi tienes, puede que me haya equivocado con los movx-sprtx y estén cambiados en cada caso.

TRaFuGa
18/10/2008, 17:25
joe, no me entero de una mierda xDDDDD

pakoito
18/10/2008, 17:40
Mira, un buen punto de comienzo es ésto: http://www.mailxmail.com/curso/informatica/j2me/capitulo18.htm

Y pensar si tu código cumple con:
http://www.mailxmail.com/cursos/imagenes/5184_18_1.gif