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

时间:2019-12-25 22:31:55

标签: c# unity3d

我刚刚制作了一个 Particle System (粒子系统),该系统每 1 秒产生一个 “熔岩” 粒子(使用< strong>各种尺寸,颜色等)。当与这些熔岩粒子之一碰撞时,我需要玩家重生 respawn()函数已经存在并且可以正常工作,现在只需要在正确的时间调用它即可)。我在 Unity答案和其他站点以及 StackOverflow 上进行了大量研究,但不知道如何执行。

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

enter image description here

并且当玩家触摸熔岩粒子时,应调用此代码

private void OnParticleCollision(GameObject collision)
{
    if (collision.CompareTag("Lava"))
    {
        StartCoroutine(TouchedLava());
    }
}

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

谢谢!

1 个答案:

答案 0 :(得分:4)

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

我认为本教程可以为您提供帮助:

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

enter image description here

编辑:

这是我的工作脚本:

public class ParticleTest : MonoBehaviour
{
    public ParticleSystem part;

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

    void OnParticleCollision(GameObject other)
    {
        if(other.tag == "Player")
           Debug.Log(other.tag);
    }
}

enter image description here