• 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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

        // 自己(勾选了)开始接触另一个(勾选了)触发
    void OnTriggerEnter(Collider other)
      // 自己(勾选了)停止接触另一个(勾选了)触发
        void OnTriggerExit(Collider other)
         // 自己(勾选了)一直接触另一个(勾选了)不断触发
        void OnTriggerStay(Collider other) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

  • 相关阅读:
    01_中间件
    基于C语言实现了PASCAL编译器
    前端笔记:Create React App 初始化项目的几个关键文件解读
    Android Service介绍
    python datetime 返回一个时间段内的所有日期列表
    线程安全问题及其解决
    MTK平台Metadata的加载(4)—Q版本后
    resvr.exe 电脑病毒清理
    微信小程序实验案例:简易成语小词典
    客服回复差评的话术模板
  • 原文地址:https://blog.csdn.net/gls_nuaa/article/details/127967295