Pregunta

Tengo un poco de movimiento torpe de mi sprite.

Básicamente, cuando el usuario toca un punto en la pantalla, el sprite debería moverse a ese punto. Esto está funcionando bien la mayoría ... es incluso teniendo en cuenta un delta -. Porque la velocidad de fotogramas puede no ser consistente

Sin embargo, noto que el movimiento y por lo general termina antes del movimiento x (incluso cuando las distancias a los viajes son los mismos), por lo que aparece como el sprite se está moviendo en una forma de 'L' en lugar de una línea diagonal suave.

vertical y horizontal de la velocidad (vx, vy) se establecen en 300. Alguna idea de lo que está mal? ¿Cómo puedo ir sobre conseguir mi sprite para moverse en una línea diagonal suave?

 - (void)update:(ccTime)dt
{
int x = self.position.x;
int y = self.position.y;

    //if ball is to the left of target point
if (x<targetx)
{
            //if movement of the ball won't take it to it's target position
    if (x+(vx *dt) < targetx)
    {
        x += vx * dt;
    }
    else {
        x = targetx;
    }

} else if (x>targetx) //same with x being too far to the right
{
    if (x-(vx *dt) > targetx)
    {
        x -= vx * dt;
    }
    else {
        x = targetx;
    }

}
if (y<targety)
{
    if (y+(vy*dt)<targety)
    {
        y += vy * dt;
    }
    else {
        y = targety;
    }

} else if (y>targety)
{
    if (y-(vy*dt)>targety)
    {
        y -= vy * dt;
    }
    else {
        y = targety;
    }

}
self.position = ccp(x,y);
}
¿Fue útil?

Solución

que desea mover a (objetivoX, targetY) de cualquier (x, y) y llegar a las dos coordenadas al mismo tiempo (para evitar la "pata de perro"). Así, supongamos que la x es la velocidad vx accediéndose a ella en t segundos. Eso significa vx = (objetivoX - x) / t. T debe ser el mismo para la coordenada y si quieres un movimiento suave al mismo punto, al mismo tiempo, de manera que los medios de t = (objetivoX - x) / vx y vy debe ser en realidad (targetY - y) * vx / (objetivoX -. x)

En otras palabras, no se puede establecer vx y vy por separado y obtener el resultado deseado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top