2013-06-05 35 views
0

我已經使用Cocos2d 2.0和UIAccelleration控制器實施了太空射擊遊戲項目。 的UIAccelleration作爲一些缺點:適用於iOS的Cocos2d:陀螺儀與UIAccelleration

  • 它需要校準
  • 這取決於實際accelleration並且因此可能導致鬆散靈敏度,因爲它是很難找到關於如何的最優配置

I have found some tutorial使用陀螺儀代替(我知道這只是在最新的iPhone/iPod上,但因爲我已經使用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)]; 
    } 

    } 
+1

陀螺儀不是加速度計的替代品,閱讀這些http://stackoverflow.com/questions/3089917/gyroscope-vs-accelerometer和http://stackoverflow.com/questions/5492479/do-i-get - 更精確 - 或更快的加速度計-讀數與 - 核 - 運動 – LearnCocos2D

回答

0

在我使用的陀螺儀作爲移動我的角色主要輸入源的一天結束。原因在於Accellerometer提供了以G力表示的加速度值,加速度本身不會告訴您玩家是否以正確的角度握持設備。使用Accellerometer我必須根據每個新GameScene的初始加速度校準設備。使用陀螺儀代替允許設備的絕對位置具有恆定值,並且以這種方式,我可以跳過校準階段(這可能會對用戶造成麻煩),並且僅留下校準靈敏度的選項(而不是在每個GameScene中設置一個初始播放位置)。由於@ LearnCocos2D表示陀螺儀不是Accellerometer的替代品,所以,現在我可以輕鬆地集成Accelleration檢測來觸發特殊的移動/拍攝或其他奇特的事物。