J'ai un mouvement saccadé de mon sprite.déplacer un sprite provoque un mouvement saccadé
Fondamentalement, lorsque l'utilisateur touche un point sur l'écran, l'image-objet doit se déplacer à ce point. Cela fonctionne principalement bien ... il prend même en compte un delta - parce que le taux de trame peut ne pas être cohérent. Cependant, je remarque que le mouvement y finit habituellement avant le mouvement x (même lorsque les distances à parcourir sont les mêmes), il semble donc que l'image-objet se déplace en forme de «L» plutôt que de diagonale lisse .
Les vitesses verticales et horizontales (vx, vy) sont toutes les deux fixées à 300. Quelles sont les idées qui ne vont pas? Comment puis-je obtenir que mon sprite se déplace dans une ligne diagonale lisse?
- (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);
}
Je pense que j'obtiens ceci, donc x + = vx * dt; et y + = (targety - y) * vx/(targetx - x) * dt? –
Oui, mais attention à la division par zéro si (targetx - x) = 0. – Jim