博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
粒子系统碰撞检测
阅读量:7022 次
发布时间:2019-06-28

本文共 1577 字,大约阅读时间需要 5 分钟。

hot3.png

MonoBehaviour.OnParticleCollision(GameObject)

Description

OnParticleCollision is called when a particle hits a collider.

This can be used to apply damage to a game object when hit by particles

 

粒子碰撞了collider 非Trigger 就会触发 绑定了该脚本的 OnParticleCollision函数,

1.

同一帧中即使一个粒子系统的多个粒子对象均与碰撞体对象发生碰撞 ,碰撞体对象也只会接收到一条碰撞消息,也就是OnXXX只会被调用一次。

204658_m3Uv_1391394.png 绑定在Cube上,那么将会接收到blacksmoke redsomke的碰撞消息 ,并且参数的GameObject也是这2者

void  OnParticleCollision(GameObject obj)    {        Debug.Log(obj.name);    }

如果绑定在blackXXX 那么消息函数 OnXXX 的参数GameObject就会是Cube 和redXXXX 

 

2.

还可以利用ParticleCollisionEvent 数组来处理 多个粒子对象 碰撞事件事件-官方实例

using UnityEngine;using System.Collections;public class ExampleClass : MonoBehaviour {    public ParticleSystem part;    public ParticleCollisionEvent[] collisionEvents;    void Start() {        part = GetComponent
(); collisionEvents = new ParticleCollisionEvent[16]; } void OnParticleCollision(GameObject other) { int safeLength = part.safeCollisionEventSize; if (collisionEvents.Length < safeLength) collisionEvents = new ParticleCollisionEvent[safeLength]; int numCollisionEvents = part.GetCollisionEvents(other, collisionEvents); Rigidbody rb = other.GetComponent
(); int i = 0; while (i < numCollisionEvents) { if (rb) { Vector3 pos = collisionEvents[i].intersection; Vector3 force = collisionEvents[i].velocity * 10; rb.AddForce(force); } i++; } }}

 

转载于:https://my.oschina.net/kkkkkkkkkkkkk/blog/679484

你可能感兴趣的文章
一年来,3D电视给力降价
查看>>
多业务安全路由器网关走俏的原因
查看>>
mysql自定义函数
查看>>
我的友情链接
查看>>
C# 25个必须知道的基础概念1
查看>>
this指针
查看>>
centos 零碎学习小记 7.
查看>>
我的友情链接
查看>>
通用权限管理系统组件遭遇VS2008是英文版,OS是日语XP后。。
查看>>
优化JAVA代码的效率
查看>>
Vim(Vi)编辑器的操作大全(2)——修改档案。
查看>>
我的友情链接
查看>>
Mysql修改存储过程相关权限问题
查看>>
百万宝贝影评感受
查看>>
海量数据高性能分页
查看>>
命令行解析(os.Args,使用flag获取复杂参数)
查看>>
helpful flooring solutions to your home
查看>>
浅析二三线城市地方社区栏目分类的技巧
查看>>
我的友情链接
查看>>
MySQL硬件优化
查看>>