所以我有點背景故事。我想實現一個粒子效果和聲音效果,當用戶搖動他們的iDevice時,效果和效果都會持續3秒左右。但是第一個問題是在UIEvent中爲震動而建立的時候拒絕工作。所以我聽取了幾位科科斯老兵的建議,只是使用一些腳本來獲得「猛烈的」加速計輸入作爲震動。至今工作很好。Cocos2d搖/加速計問題
問題是,如果你不停地晃動它,只是將粒子和聲音反覆堆疊。現在,除非發生這種情況,否則即使您謹慎嘗試,也不會這麼做。所以我希望做的是在粒子效果/聲音效果開始時禁用加速度計,然後在完成後立即重新啓用它。現在我不知道我是否應該按計劃,NStimer或其他功能來做到這一點。我接受所有建議。這裏是我目前的「動搖」代碼。
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
const float violence = 1;
static BOOL beenhere;
BOOL shake = FALSE;
if (beenhere) return;
beenhere = TRUE;
if (acceleration.x > violence * 1.5 || acceleration.x < (-1.5* violence))
shake = TRUE;
if (acceleration.y > violence * 2 || acceleration.y < (-2 * violence))
shake = TRUE;
if (acceleration.z > violence * 3 || acceleration.z < (-3 * violence))
shake = TRUE;
if (shake) {
id particleSystem = [CCParticleSystemQuad particleWithFile:@"particle.plist"];
[self addChild: particleSystem];
// Super simple Audio playback for sound effects!
[[SimpleAudioEngine sharedEngine] playEffect:@"Sound.mp3"];
shake = FALSE;
}
beenhere = FALSE;
}