Unity射线检测常见的几种应用

一:检测单个物体

//初始化射线:中心+方向
        Ray rayNoraml = new Ray(Vector3.zero,Vector3.up*10);
        //绘制射线
        Debug.DrawRay(transform.position,transform.forward,Color.red,10);

if (Input.GetMouseButtonDown(0))
        {
            //射线检测:从屏幕中心发出一条射线
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            //15+种重载:射线,碰撞 ,射程,开启的层级
            if (Physics.Raycast(ray,out hit,1000,1 << LayerMask.NameToLayer("Enemy")))
            {
                Debug.Log(hit.collider.name);

Debug.Log(hit.point);
                if (hit.collider.tag == "Enemy")
                {

}
            }

}

二:检测多个物体

只要存在Collider,满足方法参数对应的条件,都可以使用射线检测碰撞。

if (Input.GetMouseButtonDown(0))
 {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            Debug.DrawRay(ray.origin, ray.direction, Color.red);
            RaycastHit[] hit = Physics.RaycastAll(ray, Mathf.Infinity,1 << LayerMask.NameToLayer("Enemy"));
            if (hit.Length > 0)
            {
                for (int i = 0; i < hit.Length; i++)
                {
                    Debug.Log("检测到物体" + hit[i].collider.name);
                }
            }
 }

三:球形检测

if (Input.GetMouseButtonDown(0)){

int radius = 10;
        Collider[] cols = Physics.OverlapSphere(this.transform.position, radius, LayerMask.NameToLayer("Enemy"));
        if(cols.Length >0)
        {
            for (int i = 0; i < cols.Length; i++)
            {
                Debug.Log("检测到物体" + cols[i].name);
            }
        }

}

private void OnDrawGizmos()
    {
        Gizmos.DrawWireSphere(this.transform.position, 10);
    }

Unity射线检测整理相关推荐

  1. unity 射线检测 碰撞点不准确的原因分析

    unity 射线检测 碰撞点不准确的原因分析 射线检测的时候,出现了碰撞的那个点位置总是上下不准确,但屏幕中心位置不受影响,越远离中心,越偏移. 无论是用鼠标,还是ui上的坐标都不准确. 下面是代码 ...

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

    1.用Physics.Raycast进行射线检测 物体必须有Collider碰撞组件. //定义一条射线,起点为GO1的物体坐标,终点为GO2的物体坐标 Ray ray = new Ray(GO1.t ...

  3. Unity射线检测的用法总结

    RayCast 射线检测 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...

  4. unity射线检测高速飞行的子弹是否打到敌人

    利用射线检测,检测两帧子弹位置连线是否碰撞敌人,并改变敌人状态. 控制敌人射出的子弹的类如下: using System.Collections; using System.Collections.G ...

  5. 《Unity 射线检测》球形方向投射

    球形方向投射有两种. 1.Physics.SphereCast 粗略的返回碰撞信息以及碰撞到的第一个碰撞详细信息,如果不需要获得全部的碰撞信息的话,可以用这个. 2.Physics.SphereCas ...

  6. 直播笔记 | Unity中射线检测详解

    本文首发于洪流学堂微信公众号. 洪流学堂,学Unity快人几步 你好,我是郑洪智,你的技术探路者. 这周三我们直播剖析了Unity中射线检测的功能,以下是直播内容精华部分笔记. 完整录播:https: ...

  7. Unity学习之Physic.Raycast(射线检测)个人理解分享

    Physics.Raycast参数 public static bool Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitIn ...

  8. Unity 射线与碰撞范围检测【踩坑记录】

    射线检测 射线检测在2D和3D的区别比较大 一定要加上对应的Collider组件 对应的函数只检测对应的Collider,Physics.Raycast是不会检测到Collider 2D的(这个让我有 ...

  9. Unity中的射线检测

    using System.Collections; using System.Collections.Generic; using UnityEngine;public class Lesson23 ...

  10. Unity 2019 射线检测失效

    之前在做毕设的一个FPS游戏时,遇到了使用射线检测失效的情况,特此记录以下. 前因 在FPS游戏中,对于子弹的发射主要通过两种方式来实现. 一种可以通过实例化子弹的GameObject对其施加物理效果 ...

最新文章

  1. C++实现求字符串的所有的组合
  2. Resource interpreted as Stylesheet but transferred with MIME type application/x-css
  3. python中的单下划线和双下划线_python中的单下划线和双下划线
  4. 聊聊Java中的并发队列中 有界队列和无界队列的区别
  5. JVM(2)——JVM类加载机制
  6. 【Antlr】Antlr 将 CSV文件 转成Map数据结构
  7. 人工智能的数学基础(二):函数
  8. [译]为什么Vue不支持templateURL
  9. Android入门笔记02
  10. 任务调度的合理性(拓扑排序)
  11. Rust: codewars 的Count of positives / sum of negatives
  12. AI: 2021 年人工智能前沿科技报告(更新中……)
  13. 用Python对全国火车站数量进行分析,发现东北三省竟然占了2成
  14. idea 怎么快速创建类的快捷键_Idea 常用快捷键整理
  15. pr cc 2018的快捷键整理
  16. eeepc linux 窗口管理器,EeePC安装Windows 7全教程 全机型适用
  17. 重磅资源!PyTorch的福音,用PyTorch 1.0进行教学的免费深度学习课程,来自idiap和瑞士洛桑联邦理工学院...
  18. 学以致用——Java源码——使用Graphics2D类draw方法绘制立方体(Drawing Cubes)
  19. 如何提升公众号的阅读量?提高公众号阅读量的方法介绍
  20. 树莓派3B qt+mplayer制作音乐播放器(10)

热门文章

  1. 平方根python_python如何求平方根
  2. java 计算平方根_Java 计算int值的平方根
  3. Chrome 手动清理缓存
  4. 【excel问题】关于组织策略阻止超链,解决方法
  5. Javaweb-标签介绍
  6. 《构建高可用Linux服务器 第3版》—— 1.5 Linux服务器的优化
  7. 数字营销卷得再狠,「阿琉克斯之踵」不能忽视
  8. Aspose.Cells 使用FreezePanes()冻结行和列
  9. 【Python基础】from pygame.base import * # pylint: disable=wildcard-import; lgtm[py/polluting-import] Mod
  10. ubuntu多显示器单触摸屏校准