Unity中的两种射线检测方式(物理与UI)
创始人
2024-12-17 09:35:02
射线检测的总归思路就是先创建一条射线射向某个位置,将碰撞到的物体信息存起来进行比对,下面针对物理射线检测以及UI适用的射线检测分别解释

一、射线检测(物理)

定义你需要射向的位置坐标并确定他是屏幕坐标,这里我用鼠标位置

1.1获取鼠标位置:Input.mousePosition;这是一个三维向量,用Vector3接受

1.2屏幕向鼠标位置发射射线:Camera.main.ScreenPointToRay(mousePos);

1.3定义RaycastHit用来存储射线碰撞信息

1.4进行判断

代码如下:

void Update() {     if (Input.GetMouseButtonDown(0))      {         Vector3 mouseposition = Input.mousePosition;         Ray ray = Camera.main.ScreenPointToRay(mouseposition);         RaycastHit hit;         if (Physics.Raycast(ray, out hit))         {             Debug.Log("射线击中了物体: " + hit.collider.name);         }     } }

二、射线检测(UI)

流程思路与之前相同:

1.创建PointerEventData对象,PointerEventData专门用来存储和传递指针信息,例如鼠标。EventSystem.current代表当前正在活动的事件系统。获取鼠标的位置。

2.RaycastResult用来存储Unity事件系统中的射线信息

3.EventSystem.current.RaycastAll(SaveMousePosition, result);表示从SaveMousePosition位置发射一条射线,经过的ui信息都存储于result中。

4.遍历result中存储的信息进行判断

代码如下:

 PointerEventData SaveMousePosition = new PointerEventData(EventSystem.current);  SaveMousePosition.position = Input.mousePosition;  List result = new List();  EventSystem.current.RaycastAll(SaveMousePosition, result);  foreach (RaycastResult raycast in result)  {}

结尾:有任何错误请指出,补充请评论,看到会第一时间回复,谢谢。

相关内容

热门资讯

虎牙申请动态封面生成方法专利,... 国家知识产权局信息显示,广州虎牙科技有限公司申请一项名为“动态封面生成方法、装置、电子设备及存储介质...
这家意大利公司想让机械臂飞上太... 3D 打印是什么?你的直觉告诉你,是一台不足鞋盒大小的设备,吐出细如发丝的塑料,耗费数小时,堆叠成一...
友邦吊顶获得实用新型专利授权:... 证券之星消息,根据天眼查APP数据显示友邦吊顶(002718)新获得一项实用新型专利授权,专利名为“...
中国电信词元套餐落地 迅策受益... 本报讯 (记者李春莲)5月17日,中国电信集团有限公司(以下简称“中国电信”)正式推出全国试商用词元...
国内首次!128通道全植入式脑... 今天,我国正式启动首个128通道全植入式脑机接口系统多中心临床试验,这项试验由首都医科大学附属北京天...