项目场景:
第一人称射击判定射线无法击中敌人
问题描述
使用Physics.Raycast
射线方法传入层级参数LazyerMask
导致射线失效解决方案
Physics.Raycast(transform.position,transform.forward, out hit, speed,LazyerMask.NameToLazyer("Enemy"));
解决方案:
- 方案一:设置公开LazyMask类型参数,在配置界面设置层级,传给
Physics.Raycast
方法
public LazyerMask lazyMask;
Physics.Raycast(transform.position, transform.forward, out hit, speed,lazyerMask));
- 方案二:使用官方提供传参方法()
// 位移层 (8) 的索引以获得位掩码
int layerMask = 1 << 8;
// 这将仅对第 8 层中的碰撞器投射光线。
// 但相反,我们希望与第 8 层以外的所有内容发生碰撞。~ 运算符执行此操作,它反转位掩码。
layerMask = ~layerMask;
Physics.Raycast(transform.position,transform.forward, out hit, speed,lazyerMask))