Unity学习——碰撞器

  Unity中碰撞器使用了Collider组件
  碰撞器的前提必须有刚体组件(只有刚体才能发生碰撞嘛~),没有刚体即使加了碰撞器还是和没加一样会直接穿过没有反应

  Unity中提供了六种碰撞器:
  1)Box Collider(盒子碰撞器):适用于长方体,如门、墙、平台对象或者对象外壳
  2)Sphere Collider(球体碰撞器):适用于落石、球类游戏对象
  3)Capsule Collider(胶囊体碰撞器):用于Characters组件(角色控制器)或者与其他不规则碰撞器结合。Capsule和Cylinder会自动添加
  4)Mesh Collider(网格碰撞器):构建更精细的碰撞网格,只有开启Convex属性的Mesh Collider才能与其他Mesh Collider发生碰撞。Pland和Quad会自动添加
  5)Wheel Collider(车轮碰撞器):用于车轮
  6)Terrain Collider(地形碰撞器):用于地形,Terrain会自动添加

  碰撞器有几种常用属性:
  1)is Trigger:是否为触发器
  2)Material:碰撞器表面物理材质
  3)Center:位置
  4)Size:大小

  提到碰撞器就要说一下触发器Trigger,触发器是碰撞器的一个属性。触发器存在的价值在于如果想检测碰撞并且不想干扰物体的移动,就改用触发器进行检测。

  下面说明下几个常用碰撞检测函数:
  (1)Non-Trigger Collider(没有勾选is Trigger)
  此时与其他没有勾选is Trigger的物体会发生碰撞(与勾选的不会),有以下三种情况:

    // 刚开始接触碰撞区域时触发
void OnCollisionEnter(Collision other) 
// 不再接触碰撞区域时触发    
void OnCollisionExit(Collision other)
// 停留在碰撞区域中触发
   void OnCollisionStay(Collision other)

  (2)Trigger Collider(勾选了is Trigger)
  只要勾选了,碰撞器就会被忽略,无论对方是否勾选了is Trigger,都会直接穿过,但会触发下面函数:

    // 自己(勾选了)开始接触另一个(勾选了)触发
void OnTriggerEnter(Collider other)
  // 自己(勾选了)停止接触另一个(勾选了)触发
    void OnTriggerExit(Collider other)
     // 自己(勾选了)一直接触另一个(勾选了)不断触发
    void OnTriggerStay(Collider other) 

因作者水平有限,如有错误之处,请在下方评论区指出,谢谢!

你可能感兴趣的:(Unity,unity,学习,游戏引擎)