Hi,
I am an issue updating my accelerometer continuously in my 2d side-scroller game. The accelerometer updates once and then stops updating. I tried both cocos2d code (self.isAccelerometerEnabled = Yes:) and apple code ([[UIAccelerometer sharedAccelerometer].delegate - self]) but neither works. Thanks.
Below is my code:
Accelerometer Update
- (id) init {
self = [super init];
if (self != nil) {
//[UIAccelerometer sharedAccelerometer].delegate = self;
//[UIAccelerometer sharedAccelerometer].updateInterval = 1.0 / 30.0;
self.isAccelerometerEnabled = YES;
[self schedule: @selector(step:)]; //Updating Sprites
}}
- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration{
static float prevX=0, prevY=0;
#define kFilterFactor 0.05
float accelX = acceleration.x * kFilterFactor + (1- kFilterFactor)*prevX;
float accelY = acceleration.y * kFilterFactor + (1- kFilterFactor)*prevY;
prevX = accelX;
prevY = accelY;
cpVect v = cpv( accelY, accelX);
space->gravity = cpvmult(v, 800);
NSLog(@"Sprite Updated!");
}
And Sprite Update
static void
eachShape(void *ptr, void* unused)
{
cpShape *shape = (cpShape*) ptr;
CCSprite *sprite = shape->data;
if( sprite ) {
cpBody *body = shape->body;
[sprite setPosition: cpv( body->p.x, body->p.y)];
[sprite setRotation: (float) CC_RADIANS_TO_DEGREES( -body->a )];
}
}
-(void) step: (ccTime) delta
{
int steps = 2;
cpFloat dt = delta/(cpFloat)steps;
for(int i=0; i<steps; i++){
cpSpaceStep(space, dt);
}
cpSpaceHashEach(space->activeShapes, &eachShape, nil);
cpSpaceHashEach(space->staticShapes, &eachShape, nil);
}