1

所以我使用 cocos2d 中的加速度计来旋转我的精灵,但旋转一点也不平滑。我知道我必须使用过滤器,但我不知道如何将它集成到我的代码中:

-(id) init
{
self.isAccelerometerEnabled = YES;
    [[UIAccelerometer sharedAccelerometer] setUpdateInterval:1/60];

}

- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {

ombreoeuf1.rotation = acceleration.y * 90 ;

}

对不起我的英语我是法国人:/

4

2 回答 2

2

以下是如何实现低通滤波器。尝试一下,kFilteringFactor直到你得到很好的结果。

// Declare an int `accelY` in your class interface and set it to 0 in init
-(void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    float kFilteringFactor = 0.1;
    accelY = (acceleration.y * kFilteringFactor) + (accelY * (1.0 - kFilteringFactor));
    ombreoeuf1.rotation = accelY * 90;
}
于 2012-04-18T19:16:32.437 回答
0

可以帮助您平滑的一件事是将更新间隔设置为 30 fps 而不是 60,因此将您的 init 更新为:

-(id) init 
{
    self.isAccelerometerEnabled = YES;

    [[UIAccelerometer sharedAccelerometer] setUpdateInterval:1.0/30];
}
于 2012-06-08T02:33:09.607 回答