检测玩家何时与粒子碰撞 - Unity

Enr*_*vis 6 c# unity-game-engine

我刚刚制作了一个粒子系统,每1秒产生一个“熔岩”粒子(具有各种尺寸颜色等)。我需要玩家在与这些熔岩粒子之一碰撞时重生respawn()函数已经存在并且可以工作,现在只需要在正确的时间调用它)。我对Unity 答案和其他网站以及StackOverflow做了很多研究,但不明白如何做到这一点。

这是粒子系统现在的屏幕截图。我启用了触发器复选框并尝试更改一些内容,但没有成功:

在此输入图像描述

当玩家触摸熔岩粒子时应该调用此代码:

private void OnParticleCollision(GameObject collision)
{
    if (collision.CompareTag("Lava"))
    {
        StartCoroutine(TouchedLava());
    }
}
Run Code Online (Sandbox Code Playgroud)

我在控制台中没有收到任何错误(即使在运行时)。

提前致谢!

Rau*_*uza 6

您必须检查粒子系统的碰撞部分(位于触发器上方),然后将碰撞类型设置为世界。

我认为本教程可能对您有所帮助:

https://www.youtube.com/watch?v=JRa2g3vgzBo&list=PLX2vGYjWbI0QJJfR-jSqxonYuCHrUhAvN

在此输入图像描述

编辑:

这是我的工作脚本:

public class ParticleTest : MonoBehaviour
{
    public ParticleSystem part;

    void Start()
    {
        part = GetComponent<ParticleSystem>();
    }

    void OnParticleCollision(GameObject other)
    {
        if(other.tag == "Player")
           Debug.Log(other.tag);
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述