[Unity]_粒子系统作触发器/碰撞器使用

粒子系统做碰撞器

[Unity]_粒子系统作触发器/碰撞器使用_第1张图片

 

[Unity]_粒子系统作触发器/碰撞器使用_第2张图片

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class cubeBase : MonoBehaviour
{
    public void OnParticleCollision(GameObject other)
    {
        if (other.tag== "Player")
        {
            Debug.Log("hahaha");
        }
    }
}

2.粒子系统作触发器

[Unity]_粒子系统作触发器/碰撞器使用_第3张图片

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ParticleXFBase : MonoBehaviour
{

    //发生粒子碰撞的回调函数
    private void OnParticleCollision(GameObject other)
    {
        print(other.name);
    }
    //粒子触发的回调函数
    private void OnParticleTrigger()
    {
        //只要勾选了粒子系统的trigger,程序运行后会一直打印
        print("触发了");

        //官方示例,拿来说明
        ParticleSystem ps = transform.GetComponent();

        List enter = new List();
        List exit = new List();
        //particleSystemTriggerEventType为枚举类型,Enter,Exit,Inside,Outside,对应粒子系统属性面板上的四个选项
        int numEnter = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter);
        int numExit = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);
        //进入触发器,粒子变为红色
        for (int i = 0; i < numEnter; i++)
        {
            ParticleSystem.Particle p = enter[i];
            p.startColor = Color.red;
            enter[i] = p;
        }
        //退出触发器 粒子变为蓝绿色
        for (int i = 0; i < numExit; i++)
        {
            ParticleSystem.Particle p = exit[i];
            p.startColor = Color.cyan;
            exit[i] = p;
        }

        ps.SetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter);
        ps.SetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);
    }

}

[Unity]_粒子系统作触发器/碰撞器使用_第4张图片

你可能感兴趣的:(unity引擎)