だから私は少し裏付けです。ユーザーが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;
}