分类 Unity3D 下的文章

Unity3D中两物体的碰撞以及激发Trigger事件

在游戏中经常有两个物体相撞,然后发生扣血,毁坏等事件,在Unity3d引擎中应该如何实现呢?

首先解决碰撞的问题。

碰撞有三个要素,分别是碰撞体(Collider),刚体(Rigidbody),和触发器(Trigger)。这三者一般是紧密相连的。

碰撞体就是俗称的判定区。比如在守望先锋中,你射出去的子弹经过敌人的身体这一判定区才会发生扣血事件。没打到敌人身体的,也就是没通过判定区的,不会触发扣血事件。

刚体就是俗称的障碍物。在GTA5中,由于你的车是刚体,所以在他撞到别的物体上时(墙壁,行人)会发生物理作用,就是会形变,或者改变运动状态。

触发器就是判断事件发生的装置。比如子弹穿过判定区,触发器判断到了,给程序返回一个扣血的方法。它一般是通过一个布尔值(bool),然后传递参数,返回方法进行工作。

理解了上面三个要素,我们再看应该如何造成血量扣减就方便的多。

例如有物体A在进行运动,在其运动路径上有物体B,然后它们各自有个碰撞体分别是ColliderA,ColliderB,我们可以在物体A上插入一个刚体组件RigidbodyA,插入一个触发器TriggerA。当它们相遇时(就是ColliderA与ColliderB有重叠区域),物体A上的RigidbodyA会使得ColliderA不能穿过ColliderB,并且触发器Trigger获得物体B的参数,返回到物体A的脚本里,调用Hurt方法进行扣血。

跟着这个思路,可以列出三个纲要

  • 加载组件>Collider,rigidbody。
  • 激发Trigger事件>bool值,获取对象。
  • 削减自身health值>调用类,调用方法,调用属性,获得并返回参数。

阅读全文

Title - Artist
0:00