射线检测的总归思路就是先创建一条射线射向某个位置,将碰撞到的物体信息存起来进行比对,下面针对物理射线检测以及UI适用的射线检测分别解释
一、射线检测(物理)
定义你需要射向的位置坐标并确定他是屏幕坐标,这里我用鼠标位置
1.1获取鼠标位置:;这是一个三维向量,用Vector3接受
1.2屏幕向鼠标位置发射射线:(mousePos);
1.3定义RaycastHit用来存储射线碰撞信息
1.4进行判断
代码如下:
void Update()
{
if ((0))
{
Vector3 mouseposition = ;
Ray ray = (mouseposition);
RaycastHit hit;
if ((ray, out hit))
{
("射线击中了物体: " + );
}
}
}
二、射线检测(UI)
流程思路与之前相同:
1.创建PointerEventData对象,PointerEventData专门用来存储和传递指针信息,例如鼠标。代表当前正在活动的事件系统。获取鼠标的位置。
用来存储Unity事件系统中的射线信息
(SaveMousePosition, result);表示从SaveMousePosition位置发射一条射线,经过的ui信息都存储于result中。
4.遍历result中存储的信息进行判断
代码如下:
PointerEventData SaveMousePosition = new PointerEventData();
= ;
List<RaycastResult> result = new List<RaycastResult>();
(SaveMousePosition, result);
foreach (RaycastResult raycast in result)
{}