学习随笔:Unity直线和球形射线检测的使用

射击游戏中常见的射线检测是这样:

if (Input.GetMouseButtonDown(0))
        {
            RaycastHit hit;
            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 1000,3))
            {
                Debug.Log(hit.collider.name);
            }
        }

Physics.Raycast()有很多重载,常用的就是这个:(射线Ray,out 碰撞信息hit,射线距离distance,整型射线检测层级LayerMask)。
需要注意的是层级是用二进制表示的,二进制的每一位对应的就是该层级,层为1则表示受检测,为0则表示不受射线检测,比如:层级5,二进制为101,则表示只有第0和3层级的游戏对象受该射线的检测,其它层均不受检测,如果受射线检测的对象受到不受射线检测对象的遮挡,射线是可以穿透检测的。

用于爆炸的球形射线检测(Physics.OverlapSphere()):

int radius = 3;
Collider[] hits = Physics.OverlapSphere(this.transform.position, radius, LayerMask.NameToLayer("layername"));
if(hits.Length >0)
{
for (int i = 0; i < hits.Length; i++)
{
Debug.Log("检测到物体" + hits[i].name);
}
}
//画出球形检测范围
private void OnDrawGizmos()
{
Gizmos.DrawWireSphere(this.transform.position, 3);
}
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值