Unity粒子碰撞事件 ParticleCollisionEvent
来源:互联网 发布:java程序员好找工作吗 编辑:程序博客网 时间:2024/06/01 08:25
小白欢迎评论,共同探讨,共同进步
首先介绍一下 OnParticleCollision() 函数。
MonoBehaviour.OnParticleCollision(GameObject)
当粒子碰撞了collider非Trigger就会触发绑定了该脚本的 OnParticleCollision 函数。
这个可以用于游戏对象被粒子击中时应用伤害到它上面。
对了,还要把特效的Particle System 中的Collision组件里的Send Collision Messages 的对勾打上,才能使函数生效哦!
同一帧中即使一个粒子系统的多个粒子对象均与碰撞体对象发生碰撞,碰撞体对象也只会接收到一条碰撞消息,也就是OnParticleCollision只会被调用一次。
还可以利用ParticleCollisionEvent数组来处理多个粒子对象碰撞事件事件
Unity粒子部分所带的结构体属性解析
//结构体ParticleCollisionEvent包含的属性
public struct ParticleCollisionEvent
{
[Obsolete("collider property is deprecated. Use colliderComponent instead, whichsupports Collider and Collider2Dcomponents.")]
public Collider collider {get; }
public Component colliderComponent {get; }
public Vector3 intersection {get; }//碰撞的点在空间中的坐标
public Vector3 normal {get; } //粒子入射碰撞点的法线方向(eg:如果粒子从X轴正方向入射,则normal输出为(1,0,0),反之负方向为(-1,0,0))
public Vector3 velocity {get; }//粒子碰撞时的三维速度向量
}
//(官方案例)给碰撞的物体添加粒子移动方向的力
public ParticleSystem part;
public List<ParticleCollisionEvent> collisionEvents;
void Start()
{
part = GetComponent<ParticleSystem>();
collisionEvents = new List<ParticleCollisionEvent>();
}
void OnParticleCollision(GameObject other)
{
int numCollisionEvents = part.GetCollisionEvents(other, collisionEvents);
Rigidbody rb = other.GetComponent<Rigidbody>();
int i = 0;
while (i < numCollisionEvents)
{
if (rb)
{
Vector3 pos = collisionEvents[i].intersection;
Vector3 force = collisionEvents[i].velocity * 10;
rb.AddForce(force);
}
i++;
}
}
- Unity粒子碰撞事件 ParticleCollisionEvent
- unity粒子系统碰撞
- [Unity基础]Shuriken粒子系统的碰撞
- Unity关于MeshCollider碰撞体无法触发碰撞事件
- 写在前面的 unity碰撞触发事件
- Unity中碰撞时触发事件
- 粒子碰撞论
- cocos2dx粒子碰撞检测
- cocos2dx粒子碰撞检测
- 蓝鸥Unity开发教程之课时16 碰撞事件
- 初始Unity 3D——碰撞事件的监听
- Unity粒子系统研究
- Unity粒子系统特性
- Unity粒子系统
- unity之粒子系统
- Unity 粒子系统
- Unity粒子系统
- unity 粒子系统
- ZigBee IEEE地址说明
- 最常用Git命令
- Hibernate 原生态sql查询
- matlab生成xml (将SynthText数据转成XML)
- #include<> 和 #include""的区别
- Unity粒子碰撞事件 ParticleCollisionEvent
- 解决通过intent.getStringData()获取文件,转成File,找不到文件的问题
- SpringBoot 进阶2-与 Mybatis实现SpringMVC Web项目
- Java运行时异常
- Delphi中String与PAnsiChar转换
- SDN控制器Floodlight源码学习(四)--控制器和交换机交互(2)
- Ubuntu 16 打开SSH服务
- 装饰者模式
- Neural Machine Translation and Sequence-to-sequence Models: A Tutorial