Unity射线检测整理
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射线检测整理相关推荐
- unity 射线检测 碰撞点不准确的原因分析
unity 射线检测 碰撞点不准确的原因分析 射线检测的时候,出现了碰撞的那个点位置总是上下不准确,但屏幕中心位置不受影响,越远离中心,越偏移. 无论是用鼠标,还是ui上的坐标都不准确. 下面是代码 ...
- [Unity][射线检测]检测两个物体之间是否有其他物体阻挡
1.用Physics.Raycast进行射线检测 物体必须有Collider碰撞组件. //定义一条射线,起点为GO1的物体坐标,终点为GO2的物体坐标 Ray ray = new Ray(GO1.t ...
- Unity射线检测的用法总结
RayCast 射线检测 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...
- unity射线检测高速飞行的子弹是否打到敌人
利用射线检测,检测两帧子弹位置连线是否碰撞敌人,并改变敌人状态. 控制敌人射出的子弹的类如下: using System.Collections; using System.Collections.G ...
- 《Unity 射线检测》球形方向投射
球形方向投射有两种. 1.Physics.SphereCast 粗略的返回碰撞信息以及碰撞到的第一个碰撞详细信息,如果不需要获得全部的碰撞信息的话,可以用这个. 2.Physics.SphereCas ...
- 直播笔记 | Unity中射线检测详解
本文首发于洪流学堂微信公众号. 洪流学堂,学Unity快人几步 你好,我是郑洪智,你的技术探路者. 这周三我们直播剖析了Unity中射线检测的功能,以下是直播内容精华部分笔记. 完整录播:https: ...
- Unity学习之Physic.Raycast(射线检测)个人理解分享
Physics.Raycast参数 public static bool Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitIn ...
- Unity 射线与碰撞范围检测【踩坑记录】
射线检测 射线检测在2D和3D的区别比较大 一定要加上对应的Collider组件 对应的函数只检测对应的Collider,Physics.Raycast是不会检测到Collider 2D的(这个让我有 ...
- Unity中的射线检测
using System.Collections; using System.Collections.Generic; using UnityEngine;public class Lesson23 ...
- Unity 2019 射线检测失效
之前在做毕设的一个FPS游戏时,遇到了使用射线检测失效的情况,特此记录以下. 前因 在FPS游戏中,对于子弹的发射主要通过两种方式来实现. 一种可以通过实例化子弹的GameObject对其施加物理效果 ...
最新文章
- C++实现求字符串的所有的组合
- Resource interpreted as Stylesheet but transferred with MIME type application/x-css
- python中的单下划线和双下划线_python中的单下划线和双下划线
- 聊聊Java中的并发队列中 有界队列和无界队列的区别
- JVM(2)——JVM类加载机制
- 【Antlr】Antlr 将 CSV文件 转成Map数据结构
- 人工智能的数学基础(二):函数
- [译]为什么Vue不支持templateURL
- Android入门笔记02
- 任务调度的合理性(拓扑排序)
- Rust: codewars 的Count of positives / sum of negatives
- AI: 2021 年人工智能前沿科技报告(更新中……)
- 用Python对全国火车站数量进行分析,发现东北三省竟然占了2成
- idea 怎么快速创建类的快捷键_Idea 常用快捷键整理
- pr cc 2018的快捷键整理
- eeepc linux 窗口管理器,EeePC安装Windows 7全教程 全机型适用
- 重磅资源!PyTorch的福音,用PyTorch 1.0进行教学的免费深度学习课程,来自idiap和瑞士洛桑联邦理工学院...
- 学以致用——Java源码——使用Graphics2D类draw方法绘制立方体(Drawing Cubes)
- 如何提升公众号的阅读量?提高公众号阅读量的方法介绍
- 树莓派3B qt+mplayer制作音乐播放器(10)
热门文章
- 平方根python_python如何求平方根
- java 计算平方根_Java 计算int值的平方根
- Chrome 手动清理缓存
- 【excel问题】关于组织策略阻止超链,解决方法
- Javaweb-标签介绍
- 《构建高可用Linux服务器 第3版》—— 1.5 Linux服务器的优化
- 数字营销卷得再狠,「阿琉克斯之踵」不能忽视
- Aspose.Cells 使用FreezePanes()冻结行和列
- 【Python基础】from pygame.base import * # pylint: disable=wildcard-import; lgtm[py/polluting-import] Mod
- ubuntu多显示器单触摸屏校准