unity新粒子系统的碰撞和触发

本文详细介绍了Unity中粒子系统的碰撞与触发功能。通过设置粒子系统组件的属性,可以实现粒子与场景中的碰撞器之间的碰撞效果及触发事件。文章还提供了具体的代码示例,帮助读者理解如何使用这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

unity中新的粒子系统中碰撞:
首先勾选粒子系统属性面板上的collision,然后勾选send collision messages,就可以从代码中检测粒子的碰撞了;
这里捡几个重要的属性说明一下:
dampen 抑制 取值范围0-1,当为1时,粒子碰到碰撞器后会消失;
bounce 反弹 让粒子碰到碰撞器后反弹回去;
colliders with 选择可以发生碰撞的层;
这里写图片描述

unity中的粒子系统中的触发:
勾选属性面板上的triggers;
colliders 将要与粒子发生触发条件的对象放这;
inside 在触发器内部;
outside 在触发器外部;
exit 离开触发器;
enter 进入触发器;
ignore 忽略粒子 kill 干掉粒子 callback 代码控制粒子
radius scale 调大数值可以增加触发器范围;
这里写图片描述

代码来了:

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

public class ParticleCollider : MonoBehaviour {

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

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

        List<ParticleSystem.Particle> enter = new List<ParticleSystem.Particle>();
        List<ParticleSystem.Particle> exit = new List<ParticleSystem.Particle>();
        //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);
    }

}

这里写图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值