c# - 使粒子到达某个位置后消失
问题描述
我正在尝试在我的游戏中创建流血效果,我想让粒子不是在一段时间后消失,而是在它们到达低于粒子发射器所有者的位置后消失。
我试图附加一个尝试执行此操作的脚本,但我似乎无法让粒子消失。
public class Blood : MonoBehaviour
{
[SerializeField]
private ParticleSystem ps;
[SerializeField]
private Transform owner;
void Update()
{
ParticleSystem.Particle[] particles = new ParticleSystem.Particle[ps.particleCount];
int num = ps.GetParticles(particles);
for (int i = 0; i < num; i++)
{
if (particles[i].position.y < owner.position.y)
{
particles[i].remainingLifetime = 0f;
}
}
}
}
解决方案
有点晚了,但是 ParticleSystem.Particle 是一个值类型(结构),所以你只是在操作一个本地副本。称呼
ps.SetParticles(particles)
最后将它们复制回粒子系统。
推荐阅读
- android - 如何在不将其保存在 android 设备的存储中的情况下创建 pdf 文档?
- drupal - 如何检查作曲家的可用版本以供可能下载以及在终端中输入什么
- javascript - 更新嵌套数组对象中的字段值
- django - 过滤器集上的 Django REST API 正则表达式
- r - 如何为 R 生存分析设置数据
- mysql - 如何验证一个表的每一行是否与 MySQL 中另一个表的至少一行相关联?
- github - 仅使用 GitHub Actions 在特定分支上运行作业
- python - 如何从 github 安装存储库?
- c# - Task.Run 仍然冻结 UI
- variables - 如何使用变量作为不同变量的数据类型?