0

長方形の中にパーティクルを作りたいです。

このコードの何が問題になっていますか?長方形のランダムな位置ではなく、エミッタの位置からのみ放出されます。

fireEmitter = [CAEmitterLayer layer];
[self.view.layer fireEmitter];
fireEmitter.emitterPosition = self.view.center;
fireEmitter.emitterSize =CGSizeMake(100, 100);
fireEmitter.renderMode = kCAEmitterLayerRectangle;
fireEmitter.emitterCells = [NSArray arrayWithObjects:fire, nil];
4

2 に答える 2

2

kCAEmitterLayerRectangleの有効な値ではありませんrenderMode。代わりに、これらの値の1つを使用する必要があります

kCAEmitterLayerUnordered
kCAEmitterLayerOldestFirst
kCAEmitterLayerOldestLast
kCAEmitterLayerBackToFront
kCAEmitterLayerAdditive

kCAEmitterLayerRectangle値は、デフォルトで。に設定する必要がありemitterShapeます kCAEmitterLayerPoint。そのため、単一のポイントからのみ放出します。有効なemitterShapesは次のとおりです。

kCAEmitterLayerPoint
kCAEmitterLayerLine
kCAEmitterLayerRectangle
kCAEmitterLayerCuboid
kCAEmitterLayerCircle
kCAEmitterLayerSphere

それらの意味については、ドキュメントを参照してください。

于 2012-09-07T05:33:21.963 に答える
0

Davidがすでに指摘しているように、使用している値はに対して有効ではありませんrenderMode。で使用されemitterShapeます。Xcodeは同じタイプ()であるため警告を表示しないため、これは非常に苛立たしいエラーになる可能性がありますNSStringこのようなエラーは、ドキュメントを読んだとしても簡単に見落とされる可能性があります。

パーティクルプレイグラウンド(UIKitエミッターの場合)やパーティクルデザイナー(cocos2dエミッターの場合)などのツールを使用すると、ドキュメントで指定されている値しか許可されないため、非常に役立ちます。

どちらも、Macでエミッターレイヤー/セルを構成できます。Particle Playgroundは、プロジェクトに簡単にインポートできるように、エミッタをObjectiveCクラスとしてエクスポートします。パーティクルデザイナーは、正しいcocos2dエミッタークラスに簡単にインポートできる交換形式でエクスポートします。

完全な開示:私はParticle Playgroundを作成しましたが、Particle Designerとは何の関係もありません(私は本当に好きですが、cocos2dプロジェクトに使用してお勧めします)。

于 2013-03-01T08:48:32.660 に答える