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即可。

  • 相关阅读:
    手游产品经理初探(十)竞品分析
    Openfire开发配置,Openfire源码配置,OpenFire二次开发配置
    code forces 148D Bag of mice (概率DP)
    Android Studio怎样更改JDK和SDK的路径?
    bbb
    收集了三年的最好的设计站点
    C# foreach 有用方法具体解释
    Java 过滤器的作用
    SVD神秘值分解
    《C语言编写 学生成绩管理系统》
  • 原文地址:https://www.cnblogs.com/mrmocha/p/8067211.html
Copyright © 2011-2022 走看看