我一直在使用此代码开发基于加速度计的项目:
.h
{
CCSprite *donk;
float movement;
}
的.m
-(id) init
{
if( (self=[super init]) ) {
donk = [CCSprite spriteWithFile:@"fe1.png" rect:CGRectMake(0, 0, 50, 50)];
donk.position = ccp (240,75);
[self addChild:donk];
[self scheduleUpdate];
self.isAccelerometerEnabled = YES;
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:1/60];
}
return self;
}
-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
float deceleration = .1f;
float sinsitivity = 10.0f;
float acelx = +acceleration.y;
movement = movement * deceleration + acelx * sinsitivity;
}
- (void)update:(ccTime)delta {
CCLOG(@"Position: %f", donk.position.x);
if ( donk.position.x > 0 && donk.position.x < 480) {
donk.position = ccp(donk.position.x + movement, donk.position.y);
}
if ( donk.position.x < -55 ) {
donk.position = ccp( 50, donk.position.y);
}
if (donk.position.x > 430 ) {
donk.position = ccp( 430, donk.position.y);
}
}
真正奇怪的是它在一个项目中有效但我将其复制并粘贴到另一个项目中,现在它不起作用。精灵在屏幕上,但它不移动,CCLOG保持x值为240.什么错了?我错过了什么吗?
答案 0 :(得分:0)
我不再对COCOS2D感兴趣了,但你不应该在那里设置acellerometer委托吗?例如
self.isAccelerometerEnabled = YES;
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:1/60];
[[UIAccelerometer sharedAccelerometer] setDelegate:self];
答案 1 :(得分:0)
我在cocos2d游戏中也遇到过类似的问题。然后我按照这种方式。
请参阅此问题中的答案:ACCELEROMETER IN COCOS2D