-
如果使用Collider+Rigidbody的方式来处理,则它是每一帧进行判定碰撞;如果子弹过快导致碰撞发生在2帧之间,则会导致无法捕获这个碰撞效果
-
基于上述原因,我们要使用射线
Raycast
进行子弹的处理,并且可以通过Layer来进行过滤Physics.Raycast(transform.position, -Vector3.up, out hit, speed * Time.deltaTime,LayerMask)
Raycast是会和第一个碰撞的物体发生作用,而RaycastAll则会和指定方向的所有物体都有作用
-
在子弹对象中声明一个
public LayerMask lm;
对象,选择要发生碰撞的layer信息:
-
在碰撞的物体对象中,修改相应的layer信息: