Я использую этот код для перемещения «падающего» спрайта в соответствии с ускорением UIDevice.
Он работает хорошо, но очень медленно, что означает, что между позициями спрайта есть скачки.
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
if(paused)
return;
directionPoint.x += acceleration.x * 100;
}
- (void)update:(ccTime)dt {
if(paused)
return;
directionPoint.y = -500*dt;
CGPoint playerDestinationPoint = player.position;
playerDestinationPoint.x += directionPoint.x;
playerDestinationPoint.y += directionPoint.y;
if(playerDestinationPoint.x < player.contentSize.width/2) {
playerDestinationPoint.x = player.contentSize.width/2;
}
else if(playerDestinationPoint.x > ([[CCDirector sharedDirector] winSize].width - play er.contentSize.width/2)) {
playerDestinationPoint.x = [[CCDirector sharedDirector] winSize].width - player.contentSize.width/2;
}
[player setPosition:playerDestinationPoint];
directionPoint = CGPointMake(0.0, 0.0);
}
Я пытался использовать CCMoveTo таким образом:
- (void)update:(ccTime)dt {
if(paused)
return;
[player stopAllActions];
directionPoint.y = -500*dt;
CGPoint playerDestinationPoint = player.position;
playerDestinationPoint.x += directionPoint.x;
playerDestinationPoint.y += directionPoint.y;
if(playerDestinationPoint.x < player.contentSize.width/2) {
playerDestinationPoint.x = player.contentSize.width/2;
}
else if(playerDestinationPoint.x > ([[CCDirector sharedDirector] winSize].width - player.contentSize.width/2)) {
playerDestinationPoint.x = [[CCDirector sharedDirector] winSize].width - player.contentSize.width/2;
}
id actionMoveTo = [CCMoveTo actionWithDuration:dt position:playerDestinationPoint];
[player runAction:actionMoveTo];
directionPoint = CGPointMake(0.0, 0.0);
}
но спрайт не будет двигаться вообще. Есть намеки?
MfG
Sideswipe