Перемещение "падающего" CCSprite по ускорению
Я использую этот код для перемещения "падающего" спрайта в соответствии с ускорением 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,
ударить в бок
1 ответ
В вашем первом в вашем методе обновления попробуйте:
playerDestinationPoint.x += directionPoint.x*dt;
Так как интервал DT может меняться в зависимости от производительности.