我已经使用 Cocos2d 2.0 和 UIAccelleration 控制器实现了一个太空射击游戏项目。UIAcceleration 作为一些缺点:
- 它需要校准
- 它取决于实际的加速度,因此它可能导致灵敏度下降,因为很难找到最佳配置
我找到了一些关于如何使用 Gyroscope 的教程(我知道这仅在最新的 iPhone/IPods 上,但由于我已经在使用 Cocos2d 2.0 -> OpenGL 2.0 ES,所以没关系)。
有没有可以试用陀螺仪的测试项目?我仍然不是 100% 清楚它是如何工作的,以及这是否会给我的代码带来真正的改变。
那是我基于 UIAcceleration 的控制器:
#define kHeroMovementAction 1
#define kPlayerSpeed 100
- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
if (calibrationLayer.visible){
[self evaluateCalibration:acceleration];
initialAccelleration=acceleration;
return;
}
if([self evaluatePause]){
return;
}
ShooterScene * shooterScene = (ShooterScene *) [self parent];
ShipEntity *playerSprite = [shooterScene playerShip];
float accellerationtSensitivity = 0.5f;
/
UIAccelerationValue xAccelleration = acceleration.x - initialAccelleration.x;
UIAccelerationValue yAccelleration = acceleration.y - initialAccelleration.y;
if(xAccelleration > 0.05 || xAccelleration < -0.05) {
[playerSprite setPosition:CGPointMake(playerSprite.position.x + xAccelleration * 80, playerSprite.position.y + yAccelleration * 80)];
}
else if(yAccelleration > 0.05 || yAccelleration < -0.05)
{
[playerSprite setPosition:CGPointMake(playerSprite.position.x + xAccelleration * 80, playerSprite.position.y + yAccelleration * 80)];
}
}