zoukankan      html  css  js  c++  java
  • 关于Unity的一些碰撞检测方法

    1.碰撞检测条件:

      A.双方均有碰撞器

      B.运动方必须有刚体

    2.碰撞检测类型:

      A.触发器情况(无碰撞物理效果)(碰撞体上IS Trigger打勾)

     1  //触发器(无物理效果)碰撞瞬间检测
     2     void OnTriggerEnter(Collider other)
     3     {
     4         Debug.Log(other.name);
     5     }
     6     //触发器(无物理效果)持续碰撞检测
     7     void OnTriggerStay(Collider other)
     8     {
     9         Debug.Log(other.name);
    10     }
    11     //触发器(无物理效果)离开碰撞检测
    12     void OnTriggerExit(Collider other)
    13     {
    14         Debug.Log(other.name);
    15     }

      B.带物理效果碰撞情况

     1    //带有物理效果的碰撞瞬间检测
     2     void OnCollisionEnter(Collision other)
     3     {
     4         print(other.transform .name);
     5     }
     6     //带有物理效果的持续碰撞检测
     7     void OnCollisionStay(Collision other)
     8     {
     9         print(other.transform.name);
    10     }
    11     //带有物理效果的离开碰撞检测
    12     void OnCollisionExit(Collision other)
    13     {
    14         print(other.transform.name);
    15     }

    3.碰撞检测常用方法:

      A.通过碰撞到的标签进行辨别

       B.通过设置物理碰撞矩阵来限定指定层之间才可以进行碰撞检测

    4.设置指定层间碰撞检测步骤如下图:

    在Editor/Project Setting/Physics 下打开碰撞矩阵面板,将我们事先添加好的“aaa”,“bbb”,“ccc”层级之间的检测关系进行自定义打勾,在这里设定仅允许“aaa”与“ccc”层级之间的物体进行碰撞检测

    根据项目需求自定义层级并设置就好(好处:可以减少碰撞检测判断标签代码执行与内存消耗)

      

       同理,2D的检测只需将3D化为2D即可。

  • 相关阅读:
    磁盘分区异常占用满了
    平滑升级nginx
    supervisor进程异常挂掉
    datetime值毫秒四舍五入
    docker+tomcat 启动时非常慢原因之JRE /dev/random阻塞
    Tomcat最大连接数问题
    Docker:设置代理proxy
    easy_install和pip安装python库修改默认的源
    zabbix监控mysql之Warning: Using a password on the command line interface can be insecure.
    Mysql忘记密码解决方法
  • 原文地址:https://www.cnblogs.com/mrmocha/p/8067211.html
Copyright © 2011-2022 走看看