(由于本人大多做2d游戏,因此以下以2d为主介绍,但是具体和3d相差不大)

在unity中有很多不同的物理检测方式,但是大致可以分为以下几种:

1.Physics2d检测系列

Physics2d.LineCast   //linecast与raycast相同,只是表现的方式不同,适合用于枪械的激光射线等

Physics2D.RayCast

Physics2D.LineCastAll   //获得两点之间的所有碰撞体,适合做视野检测

Physics2D.RayCastAll

Physics2D.BoxCast    //往给定的方向的方形区域中的检测,这里适合检测前方是否有墙体等

Physics2D.OverlapArea  //覆盖范围检测

2.RigidBody2D检测系列

rigidbody2D.cast        //往某一个方向检测除了自身和子物体意外的所有碰撞体,获得所有碰撞点,这种方式的好处是可以检测玩家是否站在某一个碰撞体上,从而决定是否可以进行跳跃操作,具体见我的博客《unity中利用纯物理工具制作角色移动跳跃功能》

rigidbody2D.overlapxx  //覆盖范围检测

3.碰撞器与触发器物理事件(常用)

在物理参数中常常遇到ContactFilter,这个参数其实是多个参数的集合体,为的是使得函数使用起来更加简洁,最典型的参数:lanyermask和是否可以检测触发器

另外说一下,官方的手册真的很清晰,即使是英文的,总体上也比较易懂

这里介绍一下BoxCast中的distance参数,这个distance是否可以理解为矩形往这个方向移动的一小段距离,在这个距离,或者说把这个矩形看作是一个很粗的射线的一个片元,好吧,我没有做个相关检测,这里我瞎猜一下。换种说法,这个矩形就好像一个photoshop画笔的形状,distance就是画笔画过的距离,当画笔画到终点,所覆盖的区域所检测到的碰撞体就是检测到的结果;或者类似手电筒,distance是手电筒光的长度。简单说,这是个有宽度的射线检测

unity物理检测的几种方式的更多相关文章

  1. VMware虚拟机直连物理网络的两种方式

    VMware虚拟机直连物理网络的两种方式   使用VMware构建虚拟机,通常虚拟机都使用NAT模式.这时,虚拟机有独立的网段.使用NAT模式,虚拟机之间数据都通过虚拟网络传输,不会影响实体机所在的实 ...

  2. 盛大游戏技术总监徐峥:Unity引擎使用的三种方式

    在5月13日Unite 2017 案例分享专场上,盛大游戏技术总监徐峥分享了使用Unity引擎的三种方式,以下为详细内容: 大家好,我先简单介绍一下我自己,我是盛大游戏的技术总监徐峥.我今天想分享的主 ...

  3. Unity调用Android的两种方式:其一、调用jar包

    unity在Android端开发的时候,免不了要调用Java:Unity可以通过两种方式来调用Android:一是调用jar.二是调用aar. 这篇文章主要讲解怎么从无到有的生成一个jar包,然后un ...

  4. asp.net用户检测的两种方式

    第一种方式(继承System.Web.UI.Page类,重写OnInit方法):    public class CheckSession : System.Web.UI.Page     {     ...

  5. unity解析json的两种方式

    一直比较钟情于json,用来做数据交互,堪称完美!下面简单说一下unity使用C#脚本如何解析json数据吧. 一.写解析类,借助于JsonUtility.FromJson 直接给个例子吧 1.jso ...

  6. unity调用Android的两种方式:其二,调用aar包

    上一篇我们讲了unity如何调用jar包 http://www.cnblogs.com/Jason-c/p/6743224.html, 现在我们介绍一下怎么生成aar包和unity怎么调用aar 一. ...

  7. JS中检测数据类型的几种方式及优缺点【转】

    1.typeof 用来检测数据类型的运算符 typeof value 返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number"."string&quo ...

  8. JS中检测数据类型的几种方式及优缺点

    1.typeof 用来检测数据类型的运算符 typeof value 返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number"."string&quo ...

  9. JS中检测数据类型的四种方式及每个方式的优缺点

    //1.typeof 用来检测数据类型的运算符 //->typeof value //->返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number". ...

随机推荐

  1. SELinux 关闭方法

    临时关闭selinux,可执行: setenforce 0  // 设置selinux状态 1启用,0警告.不启用. getenforce   //检查selinux状态是否生效 永久关闭selinu ...

  2. 15 Top Paying IT Certifications In 2016: AWS Certified Solutions Architect Leads At $125K

    Each of the five Amazon Web Services (AWS) certifications brings in an average salary of more than $ ...

  3. Qt: QAction在QToolBar中快捷键行为注意事项

    在QMenuBar中添加快捷键很简单,只要在text的特定字母前加&,如&k按下ALT+k即会触发(QPushButton也是一样).但在QToolBar则不然,需要调action-& ...

  4. UI中新增一个右击按钮的过程

    1.首先给出增加之后的成品 点击后的界面 3.需要增加的部分 新增一个类:DiglogAddUser  用于操作用户填写的数据,写入数据库等操作 3.1首先在资源文件中定义窗口代号 3.2 枚举出该代 ...

  5. SDN2017 第二次实验作业

    安装floodlight 参考链接:http://www.sdnlab.com/19189.html 从github下载源码,并编译安装 $ sudo apt-get install build-es ...

  6. 第二次项目冲刺(Beta版本)

    第二次项目冲刺(Beta版本) 团队作业7--第二次项目冲刺(Beta版本)day1 http://www.cnblogs.com/wj946/p/8017787.html 团队作业7--第二次项目冲 ...

  7. Django商城项目笔记No.7用户部分-注册接口-判断用户名和手机号是否存在

    Django商城项目笔记No.7用户部分-注册接口-判断用户名和手机号是否存在 判断用户名是否存在 后端视图代码实现,在users/view.py里编写如下代码 class UsernameCount ...

  8. 极限编程核心价值:尊重(Respect)

    原文:https://deviq.com/respect 极限编程核心价值:简单(Simplicity) 极限编程核心价值:沟通(Communication) 极限编程核心价值:反馈(Feedback ...

  9. 四、 git关联远程仓库及推送

    接之前笔记,在 github上建立与本地同名的仓库 demo 关联远程仓库 1. https 模式     远程库的名字就是origin,这是Git默认的叫法 git remote add origi ...

  10. JAVA反射机制_获取字节码文件对象

    是在运行状态中,对于任意一个类 (class文件),都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性: 这种动态获取的信息以及动态调用对象的方法的功能称为java语 ...