unity_射线检测(Raycast)

检测一个物体

using UnityEngine;

public class Example_01 : MonoBehaviour
{
    public float _maxDistance = 10;

    public LayerMask _layerMask;

    private void Update()
    {
        //1.射线 2.碰撞物体的信息 3.射线距离 4.指定的碰撞层
        //5.询问触发器交互(isTrigger 为 True 时忽略触发器交互,默认时无论 true 或者 false 都可以检测到)    
        if (Physics.Raycast(ray, out RaycastHit raycastHitInfo, _maxDistance, _layerMask,
                QueryTriggerInteraction.Ignore))
        {
            Debug.Log(raycastHitInfo.collider.gameObject.name);
            Debug.DrawLine(transform.position, raycastHitInfo.point, Color.red);
        }
        else
        {
            //Debug.DrawLine(ray.origin, ray.direction * 100, Color.green);
            Debug.DrawRay(ray.origin, ray.direction * 100, Color.yellow);
        }
    }
}

检测多个物体

        RaycastHit[] raycastHits;
        raycastHits = Physics.RaycastAll(ray, _maxDistance, _layerMask);
        Debug.DrawLine(transform.position, transform.forward * 100, Color.red);

        foreach (var hit in raycastHits)
        {
            hit.collider.gameObject.GetComponent<Renderer>().material.color = Color.black;
        }
参考:

【中文专题】Raycast射线检测在3D世界中的介绍(含基本概念,武器检测,对...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值