I want my sprite to move to a precise pixel location. I use the following code in the update method to move my sprite (kPlayerSpeed = 60.0f):
if (ccpDistance(self.position, requestedPosition) < kPlayerSpeed) {
[self changeState:kStateWalking];
return;
}
switch (self.characterState) {
case kStateWalkingUp:
self.position = ccp(self.position.x, self.position.y + kPlayerSpeed * deltaTime);
break;
case kStateWalkingDown:
self.position = ccp(self.position.x, self.position.y - kPlayerSpeed * deltaTime);
break;
case kStateWalkingLeft:
self.position = ccp(self.position.x - kPlayerSpeed * deltaTime, self.position.y);
break;
case kStateWalkingRight:
self.position = ccp(self.position.x + kPlayerSpeed * deltaTime, self.position.y);
break;
case kStateIdle:
break;
default:
break;
if (ccpDistance(self.position, requestedPosition) < kPlayerSpeed)
With this code the player stops near but not exactly on the spot.
Andres, thanks for the reply.
I couldn’t quite get your code to work, so using your lead I did a bit more research and came up with this…
Is there a better way to do it than this?
Thanks