在我的應用程序中,我使用加速計來控制遊戲中的角色。現在我只允許縱向定位,因此用戶必須將設備向右或向左傾斜才能移動角色。到目前爲止,這工作得很好。我現在想要完成的是「校準」加速度計,以考慮用戶正在玩的當前傾斜。讓我們說用戶在他們身邊,價值將會傾斜,因爲它沒有考慮到這個起點,所以他們將無法控制角色。所以我試圖說明這個初始傾斜量,然後在遊戲過程中考慮它,但是它不起作用。校準UIA加速度計?
所以我在我的非遊戲以「校準」加速度計一個按鈕,這是它執行的代碼:
這是IBAction爲
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:1.0f/30.0f];
[[UIAccelerometer sharedAccelerometer] setDelegate:self];
這是加速度計委託調用
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
[[NSUserDefaults standardUserDefaults] setFloat:acceleration.x forKey:@"X-Calibrate"];
[[UIAccelerometer sharedAccelerometer] setDelegate:nil];
}
然後在我的遊戲顯示在init我將iVar calibrationFloat設置爲我在NSUserDefaults中設置的值。然後我還有一個kFilteringFactor來擺脫小小的不安。因此,這是這臺rollingX等於一切遊戲加速計委託方法,然後我謹基於rollingX字符:
- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
rollingX = ((acceleration.x - calibrationFloat) * kFilteringFactor) + (rollingX * (1.0 - kFilteringFactor));
}
但是這是行不通的,校準似乎並沒有做任何事情,我不確定爲什麼。有沒有人設置爲什麼這不會工作?
會有什麼辦法可以提供代碼示例嗎?我自己並不太熟悉加速度計和矩陣,所以我發佈了代碼示例的賞金。非常感謝! –
我之前做過類似的事情,但我無法告訴你我頭頂的恐懼。看看這個博客文章,但希望這應該有所幫助! http://www.paradeofrain.com/2010/07/lessons-learned-in-tilt-controls/ –
任何運氣與該博客文章?還有什麼問題請告訴我! –