(由于本人大多做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,这个参数其实是多个参数的集合体,为的是使得函数使用起来更加简洁

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

 

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

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!