[Unity][射线检测]检测两个物体之间是否有其他物体阻挡

本文介绍了在Unity中使用Physics.Raycast和Physics.Linecast进行射线检测,以判断两个游戏物体之间的直线路径是否被其他物体阻挡。通过设置射线遮罩,可以特定检测某些Layer上的物体。这两种方法可用于检测攻击范围或路径规划等场景。
摘要由CSDN通过智能技术生成

1.用Physics.Raycast进行射线检测

物体必须有Collider碰撞组件。

//定义一条射线,起点为GO1的物体坐标,终点为GO2的物体坐标
Ray ray = new Ray(GO1.transform.position, GO2.transform.position - GO1.transform.position);

 //定义一个光线投射碰撞 
 RaycastHit hit; 

 //发射射线长度为100 
 Physics.Raycast(ray, out hit, 100); 

        if (hit.transform != null)
        {
            Debug.Log("blocked:" + hit.transform.name);
        }

//在Scene中生成这条射线,起点为射线的起点,终点为射线与物体的碰撞点
 Debug.DrawLine(GO1.transform.position,GO2.transforme.position);

如果射线是以GO2的物体的坐标,终点为GO1的物体的坐标,就得写成以下的方式。

Ray ray = new Ray(GO2.transform.position,GO1.transform.position - GO2.transform.position);


2.用Physics.Linecast进行射线检测


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值