问题标签 [skemitternode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
550 浏览

objective-c - 如何用 Spritekit 实现这个动画?

问题:

如何用 Spritekit 实现这个动画?

在此处输入图像描述

我做了什么:

在此处输入图像描述

问题:

1)我可以画出所有四个花瓣,但是一旦我抬起手指来画圆,它仍然会从我抬起手指的前一个点到新的触摸开始点创建一条线。参考下面的gif:

在此处输入图像描述

2)如何逐步从视图中删除橙色实线(我的太突然了)?

3) 需要调整 .sks 文件属性。

4) https://stackoverflow.com/questions/29792443/set-the-initial-state-of-skemitternode

这是我的代码:

这是我的 .sks 文件属性:

在此处输入图像描述 在此处输入图像描述

0 投票
1 回答
63 浏览

ios - SKEmitterNode从类到主场景的具体定位

我使用 SKEmitterNode 为在屏幕上旋转和滚动的炸弹创建火花效果。因为我无法正确定位火花效果,所以我遇到了一个症结所在。我可以让 SKEmitterNode 和 spriteNode 在屏幕上移动,同时炸弹旋转时位于炸弹中心的火花效果。我希望达到的效果是当炸弹旋转时,火花正确定位在炸弹的灯芯末端。

第一段代码来自 myScene:

接下来的两段代码来自 .m 类

和.h

一旦我将 CGPointMake 添加到混合中,例如 self.spark.position = CGPointMake(0.9, 0.9);

当调用 spriteNode 时,spriteNode 会在屏幕上浮动,并且 SKEmitterNode 出现在左下角静态。

或者,如果我做类似的事情:

SKEmitterNode 在其新位置是静态的,而 spriteNode 在屏幕上浮动。或者如果我这样做:

我在新位置获得了 spriteNode 和 EmitterNode 静态。

正如你所看到的,在我的沮丧中,我正抓着稻草!定位是极端的,只是为了影响,我还在学习,可以就如何获得正确的影响提出一些建议。

以下是完整的课程,请参阅新评论:

}

0 投票
0 回答
57 浏览

uiviewcontroller - 按下后退按钮时应用程序崩溃

问题:

每次我按下“< chat”按钮时,我的应用程序都会崩溃(仅当我将紫色 SKEmitterNode 添加到 GameScene.m 时才会发生这种情况)。

在此处输入图像描述

错误:

在此处输入图像描述

在此处输入图像描述

代码:

1)从 UIViewController 呈现 DrawDrawViewController(UIViewController):

2)在DrawDrawViewController(UIViewController)里面显示GameScene(SKScene)

3) 在 GameScene.m 中显示“hello world”以及一个 SKEmitterNode:

0 投票
1 回答
472 浏览

ios - Sprite Kit 粒子发射器形状

如何将粒子发射器设置为生成形状(实体形状/核心图形?),而不是纹理图像(png)?

Manipulating the Particle Emitter文档中,看起来只能设置纹理图像。

0 投票
2 回答
143 浏览

ios - 我怎样才能缓入/缓出 SKEmitterNode.particleBirthRate

我正在使用 SKEmitterNode 在水龙头上发射一些粒子。我追求类似于潜望镜中的心脏的效果。

我发现当我添加发射器时,它的行为不像刚刚“打开”。也就是说,粒子在远离生成点的地方以完整的 alpha 出现(好像它们已经存活了一段时间)。就好像发射器一直在运行一样,它突然被显示出来。

我要的是点击->添加节点->从点开始发射->发射一段时间->关闭->删除节点。

我尝试使用 GCD 调整particleBirthRate:

然后我认为 SKAction 可能是正确的工具(它可能是......)

这显然会使发射器节点淡出,而不是“关闭”,

我愿意使用 CAEmitterLayer。我也尝试过,但遇到了同样的问题。


更新:我找到了一种解决方案:resetSimulation。

这完成了我所追求的。如果可能的话,我仍然很好奇为此使用 SKAction。

0 投票
1 回答
100 浏览

swift - 任何计算 SKEmitterNode 发射的粒子数量以启用坐标跟踪的方法

所以这就是我的情况。

我有发射器从屏幕顶部产生并移动到屏幕底部,我试图让一个 png 图像跟随它们(用于命中检测目的)

问题是我需要实时更新 PNG 图像以跟踪 skemitternode,并且因为我正在生成发射器节点的多个实例,所以我无法将它们设为全局变量(需要为 n 个实例创建一个新的本地化集)

所以我想出的解决方案是有一个while循环,继续将PNG更新到发射器节点坐标。循环的条件是在粒子数小于 500(我设置的粒子寿命)时继续。

我无法让 png 图像与 skemitter 节点保持一致。它总是超过它或失去跟踪。

目前我正在使用:

其中enemySmoke 是沿Y 轴移动的SKEmitter 节点

如何让发射器和 png 保持在彼此上?

0 投票
1 回答
559 浏览

ios - SKEmitterNode 粒子在启动时滞后

我在自己的小游戏中玩弄 SKEmitterNode。我正在射击一个炮弹,当炮弹击中场景中的一个盒子时,盒子被摧毁,并创建了一个带有简单纹理“BOOM”的粒子效果,以便在盒子消失时进行过渡。问题是,当我启动发射器时,我希望它立即开始发射粒子,但事实并非如此,粒子在 0.5-1 秒的短暂延迟后播放。

这是我创建发射器的功能:

然后在发生碰撞时,调用这个函数,其中 position 是垂死对象的位置,scene 是垂死对象的父场景:

添加动作列表以使发射器在 PARTICLE_DIE_DURATION 之后消失,随机值为 PARTICLE_DIE_DURATION_RANGE。

据我了解,只要将发射器附加到场景中,它就应该开始发射粒子。但正如我一开始提到的,情况并非如此,粒子在 0.5-1 秒后开始出现。创建的粒子只是一个按比例放大并缓慢旋转的纹理,但没有设置延迟(甚至不确定是否可以这样做)。

有没有人有同样的行为或有一个建议我做错了什么?很高兴得到任何帮助:)

干杯,传统知识

0 投票
0 回答
38 浏览

macos - 星空的 SKEmitterNode ......精灵不是不透明的

我正在用 Swift 开发一个 SpriteKit 游戏,它有一个 SKEmitterNode 作为背景渲染一个星域。

我正在尝试使我的一些 SKSpriteNodes(但不是全部)对背景 SKEmitterNode 不透明,但我不知道该怎么做。将 alpha 值设置为 1.0 无济于事;zPosition 到 +1(和 SKEmitterNode 上的 -1)没有帮助。我错过了什么?

0 投票
1 回答
187 浏览

swift - SKEmitterNode 导致场景重启时崩溃

我创建了一个 SKEmitterNode 以在他死后附加到我的玩家身上。这是一种非常简单的烟雾。问题是,当我要么:

1)点击重试按钮并转换到相同的场景,它会随机地导致游戏崩溃并出现 EXC_BAD_ACCESS 错误。

2) 返回主屏幕并在至少死亡一次并创建发射器节点后点击播放并转换到该游戏场景。

目前 SKEmitterNode 是一个可选的类变量。当玩家死亡时,他们设置 SKEmitterNode 并将其附加到场景中。

“self.addChild(deathEmitter)”将在您重新加载场景后导致崩溃(确实会出现烟雾)。这与 SKEmitterNode 文档中的示例代码添加发射器节点的方式相同。

我还尝试了各种方法来修复它,比如在播放器精灵上覆盖 removeFromParent 方法并在转换场景之前自己在其上运行“removeFromParent”。

完成此操作后,只有在先返回主屏幕然后转换回游戏场景时才会发生崩溃。这意味着如果将其注释掉,我可以多次快速重试,但如果我回到主场景并返回游戏场景,它仍然会崩溃。此外,当它以这种方式崩溃时,堆栈跟踪会显示崩溃前的最后一个方法:

如果您有任何想法,请告诉我,谢谢!

PS:我在过渡期间没有做任何奇怪的事情。我只是实例化一个过渡并推动下一个场景。我依靠 SpriteKit 为我完成所有的清洁工作。

0 投票
1 回答
313 浏览

swift - 粒子效果后如何从屏幕上删除精灵节点

我已将粒子效果附加到发生碰撞时要“爆炸”的节点,从而结束游戏。然后我希望场景更改为游戏结束场景。如果输出场景暂停,则粒子效果不会发生,但现在我将其设置为不暂停,碰撞继续发生,并且游戏结束场景永远不会出现,因为游戏会继续返回输出场景。为了克服这个问题,我想我可以添加: rocket.removeFromParent()这样就不会再发生碰撞,但这意味着粒子效果不会发生。有什么办法可以让粒子效应发生,然后火箭被移除,这样我就可以同时拥有这两者了?我希望这是有道理的!