Cocos2D - 粒子跟随发射器而不是停留在它们被释放的位置

Posted

技术标签:

【中文标题】Cocos2D - 粒子跟随发射器而不是停留在它们被释放的位置【英文标题】:Cocos2D - Particles follow the emitter instead of staying at the position they were released 【发布时间】:2012-04-23 00:01:19 【问题描述】:

在 cocos2D 中,我目前有一个非常简单的粒子发射器,初始化如下:

    turnEmitter = [[CCParticleFlower alloc] init];
    turnEmitter.texture = [[CCTextureCache sharedTextureCache] addImage:@"Pocket.png"];
    [self addChild:turnEmitter z:1];
    turnEmitter.scale = 0.7f;
    turnEmitter.positionType = kCCPositionTypeFree;

它只是直接添加到游戏层。

这个发射器以这种方式跟随屏幕周围的精灵(发生在更新方法中):

    turnEmitter.position = turnEmblem.position;

现在的问题是,留在发射器后面的粒子尾部随着发射器移动,而不是被释放的粒子简单地停留在它们被释放的位置,这会产生一种非常奇怪和愚蠢的效果。

我想要做的是让粒子在它们产生后根本不跟随发射器,不幸的是我找不到任何这样做的方法。

正如您从上面的代码中看到的那样,我已经四处搜索,发现有人建议更改发射器的 positionType 属性,尽管我已经尝试了所有可能性,但它并没有解决问题。

有人知道这可能是什么吗?

【问题讨论】:

“它给人一种非常奇怪和愚蠢的效果”哈哈 你在正确的轨道上,改变 positionType 应该可以解决你的问题,至少一个 positionTypes 应该。您确定您尝试了所有选项并测试了每个选项吗? 嘿 :) 是的,我很确定我已经尝试使用所有可能的选项。不幸的是,我目前无法尝试,但会在今天晚些时候尝试。我将报告我尝试过的确切属性:) 感谢您抽出时间提供帮助! 是的,我刚刚在 Cocos2D 源代码中找到了所有 3 种可能的属性类型,它们是“kCCPositionTypeFree”、“kCCPositionTypeRelative”和“kCCPositionTypeGrouped”。 TypeFree 和 TypeRelative 没有任何影响,而 TypeGrouped 只是让粒子在发射器周围分组,而不是分散它们。现在使用 TypeFree 和 TypeGrouped,产生的粒子会在发射器移动时停留在发射器后面,但它们仍会相对于发射器重新定位,因此看起来尾巴以一种奇怪的方式跟随它 虽然 TypeFree 看起来确实应该让粒子完全独立于那个发射器,但这显然不会发生。我真的不知道该怎么办,现在已经坚持了一段时间。 【参考方案1】:

您可能还想尝试将“emitterMode”更改为“kCCPositionTypeFree”。我有一个类似的问题,我将发射器作为 CCNode 的子节点。 CCNode 正在旋转,但粒子和发射器没有。同样,它看起来很愚蠢,因为旋转的错觉被破坏了。我需要在我的发射器上设置以下内容:

emitter.emitterMode = kCCPositionTypeRelative;
emitter.positionType = kCCPositionTypeRelative;

【讨论】:

emittermode 与这里无关。它应该设置为重力模式或半径模式。

以上是关于Cocos2D - 粒子跟随发射器而不是停留在它们被释放的位置的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D粒子系统粒子不跟随旋转

粒子在mousemove上跟随光标(Javascript-画布)

我如何制作五彩纸屑?

cocos2d 粒子性能

小鳄鱼洗澡游戏里面水的流动,是如何实现的?

Unity中如何做到这个模型转变成粒子的效果。