Unity中Raycast射线检测怎么用

这篇文章给大家分享的是有关Unity中Raycast射线检测怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

10余年的达孜网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整达孜建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“达孜网站设计”,“达孜网站推广”以来,每个客户项目都认真落实执行。

项目地址:Raycast - SouthBegonia (https://github.com/SouthBegonia/UnityWorld/tree/master/Raycast)

Unity中Raycast射线检测怎么用

Unity中Raycast射线检测怎么用

Ray 射线

  • 含义:官方解释为一条无穷的线,开始于origin点,朝向direction方向(但是,根据项目验证来看其默认长度为单位向量,只有对direction进行乘以倍率,才可实现延长射线,而非无穷)

  • 用法:

    Ray ray = new Ray(transform.position,transform.forward)
    Ray camerRay = Camera.main.ScreenPointToRay(Input.mousePosition)

RaycastHit 光线投射碰撞信息

  • 含义:取得从Raycast函数中得到的碰撞信息(注意不是collider哈,是包含collider信息)

  • 关键变量:point、collider、rigidbody、transform

检测方法 - 线型检测

Physics.Raycast 光线投射

  • 功能:在已有一条射线(也可无)的基础上,使用射线(新建射线)进行一定距离内的定向检测。可修改射线长度,限制其检测的Layer层,并且可以得到射线检测到的碰撞信息。但仅能检测到 第一个被射线碰撞的物体 ,后面的物体无法被检测到

  • 用法:

    Raycast(transform.position, Vector.forward, distance, LayerMask.GetMask("Enemy"))
    Raycast(transform.position, Vector.forward, distance, out RaycastHitInformation ,LayerMask.GetMask("Enemy"))
    Raycast (MyRay, distance, LayerMash.GetMask("Enemy"))
    Raycast (MyRay, out RaycastHitInformation, distance, LayerMask.GetMask("Enemy"))
  • 适用场合:配合相机坐标转换实现各类交互

Physics.RaycastAll 所有光线投射

  • 功能:机理用法大致同Raycast,当区别在于可检测射线路径上的 所有物体 ,返回检测信息的数组。其他带All后缀的方法也同理

  • 用法:

    RaycastHit[] hits = RaycastAll(Vector3.zero, Vector.forward, distance, LayerMask.GetMask("Enemy"))
    RaycastHit[] hits = RaycastAll(MyRay, distance, LayerMash.GetMask("Enemy"))
  • 适用场合:穿透性检测

Physics.Linecast 线段投射

  • 功能:建立 某两点之间 的射线进行检测,返回bool类型

  • 用法:

    Linecast(startPos, endPos, LayerMask.GetMask("Enemy"))
    Linecast(startPos, endPos, out RaycastHit, LayerMask.GetMask("Enemy"))
  • 适用场合:特定地点局部距离射线检测

检测方法 - 体型检测

Physics.SphereCast 球体投射

  • 功能:扩展检测范围为球形,返回bool类型。但是该投射用法需要万分小心,见下

  • 用法:

    SphereCast (originPos, radius, direction, out RaycastHit, distance, LayerMask.GetMask("Enemy"))
    SphereCast (Ray, radius, out RaycastHit, distance, LayerMask.GetMask("Enemy"))
  • 适用场合:检测目的地是否可抵达,从而判断可移动性

Physics.Boxcast 块体投射/ CapsuleCast 胶囊体投射

  • 功能:同球体投射

  • 用法:同球体投射

Physics.OverlapSphere 相交球

  • 功能:同样检测球形,但与SphereCast存在较大区别

  • 用法:

    • Collider[] hits = Physics.OverlapSphere(startPos, radius, LayerMask.GetMask("Enemy")) :以startPos为原点,创建半径为radius的球形,检测区域为整个球形包围体(实心),检测Enemy层上的物体,返回所有碰撞物体的collider而不是RaycastHit

  • 适用场合:检测挂载物体球形范围内是否存在碰撞,常用方法

Physics.IgnoreCollision 忽略碰撞

IgnoreCollision (collider1, collider2, ignore)

感谢各位的阅读!关于“Unity中Raycast射线检测怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

文章题目:Unity中Raycast射线检测怎么用
分享网址:https://www.cdcxhl.com/article16/piscgg.html

成都网站建设公司_创新互联,为您提供网站设计公司小程序开发虚拟主机商城网站网站导航品牌网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

营销型网站建设