CCParticleSystem と iPhone で奇妙な問題が発生したようです。
画面を左から右に横切ってレーザーを発射しています。パーティクル エフェクトを追加して、レーザーをレールガンのように見せました。Particle Designer の「emmas 共有」パーティクル エフェクトを使用しました。
画面全体にレーザーを送信するコードは次のとおりです。
-(void)fireLaserCannonAddon
{
if( _ship == nil || _ship.dead ) return;
CGSize winSize = [CCDirector sharedDirector].winSize;
shipLaserCannon = [_laserCannonArray nextSprite];
[shipLaserCannon stopAllActions];
shipLaserCannon.position = ccpAdd(_ship.position, ccp(shipLaserCannon.contentSize.width / 2, -shipLaserCannon.contentSize.height));
[shipLaserCannon revive];
CCParticleSystemQuad *laserEffect = [_laserEffect nextParticleSystem];
[laserEffect resetSystem];
[shipLaserCannon runAction:[CCSequence actions:
[CCMoveBy actionWithDuration:0.5 position:ccp(winSize.width, 0)],
[CCCallFuncN actionWithTarget:self selector:@selector(invisNode:)],
[CCCallFunc actionWithTarget:self selector:@selector(endLaserEffects)], nil]];
}
そして、粒子システム効果をレーザーの位置に設定するコード:
-(void)updateLaserEffects:(ccTime)dt
{
for( CCParticleSystemQuad *laserEffect in _laserEffect.array )
{
laserEffect.position = shipLaserCannon.position;
}
}
-(void)endLaserEffects
{
for( CCParticleSystemQuad *laserEffect in _laserEffect.array )
{
[laserEffect stopSystem];
}
}
Particle Designer で「emmas 共有」エフェクトを開くと、画面上でクリック アンド ドラッグした場合と同じ効果が得られます。これは iPad および iPad シミュレーターでは完全に機能しますが、私の iPhone 3GS / iPhone (SD および Retina) シミュレーターでは、放出された粒子がレーザーで「運ばれる」ように見えます。これは、PositionType を kCCPositionTypeGrouped に設定するのと同じではありません (放出されたパーティクルはその円形のままです)。パーティクルはレーザーから放出されていますが、Particle Designer シミュレーターや通常の iPad のように放出された場所にとどまるのではなく、レーザーの後ろに少し引きずられています。あたかもレーザーが粒子効果を持つ独自のレイヤーを作成しているかのように見え、その後ろに「レイヤー」が遅れています。
レーザーの動きが速すぎるのではないかと思いましたが、遅くしても同じ効果がありました。
この「バグ」は、別の小さな問題も引き起こします。レーザーが画面から離れて取り出されると、レーザーが「運ばれる」ため、最後に放出された粒子の残骸が画面の左下に表示されるためです。放出されたパーティクルがまだレーザーの position.x に従っているためだと確信しています (これは行うべきではありません。ベースのみが想定されています)。位置。ただし、iPad / iPad シミュレーターではこの問題は発生しません。
ところで、これは「エマ共有」パーティクル エフェクトだけに限定されたものではなく、他のすべてのエフェクトでも同じように動作するようです。
iPhone の移動オブジェクトで CCParticleSystems を使用する際に、同様の問題が発生した人はいますか?
役立つ情報をいただければ幸いです。