[Unity3d]游戏中子弹碰撞的处理

  • 如果使用Collider+Rigidbody的方式来处理,则它是每一帧进行判定碰撞;如果子弹过快导致碰撞发生在2帧之间,则会导致无法捕获这个碰撞效果

  • 基于上述原因,我们要使用射线Raycast进行子弹的处理,并且可以通过Layer来进行过滤

    Physics.Raycast(transform.position, -Vector3.up, out hit, speed * Time.deltaTime,LayerMask)
    

    Raycast是会和第一个碰撞的物体发生作用,而RaycastAll则会和指定方向的所有物体都有作用

  • 在子弹对象中声明一个public LayerMask lm;对象,选择要发生碰撞的layer信息:

  • 在碰撞的物体对象中,修改相应的layer信息:

原文地址:https://www.cnblogs.com/xiuj/p/5936240.html