PIero
1
希望在角色落地时,从脚下的连接器生成尘土粒子效果,但显示效果不佳。
(跳跃)→(空中)→(落地)
我在上述三个状态中的“落地”状态触发了粒子生成。
但是在落地时粒子不会显示。只有在落地后再次跳跃时才会显示。
如果从脚下以外的连接器生成,相同的粒子可以正常显示;即使改变脚下连接器的位置,粒子也能显示;即使将粒子图像本身向上移动,也能显示。只有当生成位置在瓦片碰撞区域下方时,粒子才无法显示。然而,那些在落地时未显示的粒子,在随后跳跃并在瓦片与角色之间产生空隙时,却会延迟显示。
这是什么机制导致的?我认为粒子没有与瓦片的碰撞检测,但实际存在吗?
之前的话题中提到开启 SDF Collision 会产生碰撞,但瓦片的设置是关闭状态。为了不发生碰撞,还需要其他设置吗?
Baz
2
如果能有项目文件,我们就能确切地知道发生这种情况的原因,那就太好了。您是否介意将您的项目发送至 pgmmv-support@gotchagotcha.jp,以便我们调查粒子在土地状态下的问题?
我查看了您的项目,感谢您提交!
这确实看起来像是一个 bug,因为您的逻辑中没有任何内容会导致与角色动作不同步的情况。实际上,即使在首次播放测试的跳跃中,我也可以看到落地效果。
此外,我在您的逻辑中没有看到其他会导致效果与角色动作不同步的触发器。
因此,我将此作为 bug 调查提交。
已确认原因,这是设计规格,并非配置问题。
原因主要有两点:
① 可见区域矩形被设置为 x=0, y=0, h=0, w=200 这种特殊形状。
该矩形通常用于所谓的“剔除”(culling)处理,即判断矩形是否在屏幕内以决定是否显示粒子。由于该矩形位于屏幕外,导致粒子无法显示。
另一方面,当角色跳跃时,角色向上移动并进入屏幕范围内,因此粒子会显示出来。
② 将 GPU 粒子的位置更改为 (-88, 153),然后通过 emission_shape_offset = (100,-150) 将粒子仅向上移动 150px。
这是对“为什么脚部在屏幕内却未显示”这一问题的解释。
GPUParticles2D 节点的自身位置为 (-88, 153),这意味着显示位置比实际位置低 153px(即位于地面之下),从而处于屏幕外。
对应的解决方案有:将①中的矩形尺寸恢复为初始值,或者取消②中的双重移动处理,将位置设为 0,0 并将粒子偏移量设为 0。采取上述任一措施(为了更正确地运行,建议同时采取两项措施)即可解决问题。
2 个赞