在我的遊戲中,我的主角是CCSprite。該CCSprite由UIAccelerometer控制,我通過執行self.isAccelerometerEnabled = YES;
啓用了加速度計方法,然後將updateInterval
設置爲:1/30
。使用UIAccelerometer CCSprite不夠快地重繪?
問題不在於我的加速度值不是實際的好值,而是它與我的CCSprite沒有得到足夠快的重繪速度。因此,如果我的CCSprite每0.1秒移動很多像素,那麼精靈開始閃爍,然後它越快閃爍越快。
我在我的.h中聲明瞭我的加速度值,並將它們設置在加速度計委託方法中,然後在我的遊戲循環中設置了CCSprite的位置。
任何想法,爲什麼會發生這種情況?
謝謝!
編輯:加速度計代碼:
float accelX = (acceleration.x - [[NSUserDefaults standardUserDefaults] floatForKey:@"X-Calibrate"]);
rollingX = (accelX * kFilteringFactor) + (rollingX * (1.0 - kFilteringFactor));
AccelPoint.x += (rollingX*50);
我已經做了一個高通濾波器!看看我的edit1。這不能成爲其他地方的錯誤,但我不確定什麼可以讓我的精靈做到這一點!我的過濾器值是0.2 btw。 –
這是一個低通濾波器和用於消除突然移動的正確濾波器類型。但是,您通過將結果值乘以50來達到目的。這可以將任何剩餘差異放大50倍。加速度範圍從-1到+1,濾波不改變數值範圍,這意味着在最極端的情況下,您的加速度計控制的精靈可以在一幀中移動多達50個像素。下一條評論的另一條線索......。 – LearnCocos2D
您的加速度計updateInterval是30幀。除非你還將遊戲鎖定在30 fps,否則就意味着每隔一幀你就會得到新的加速值。在其他所有框架上,我可以想象你正在運行某種代碼來改變精靈的位置或者改變rollingX。例如,加速度計告訴精靈向右移動25個像素,下一個幀將其他精度重新定位到左側-20個像素,然後重複每一幀,您就會得到一個閃爍的精靈,閃爍的精靈會更快地閃爍更快的加速度值。 – LearnCocos2D