Skip to main content

射线投射器

射线投射器

事件系统需要一种方法来检测当前输入事件需要发送到的位置,而此方法由射线投射器 (Raycaster) 提供。给定屏幕空间位置的情况下,射线投射器将收集所有潜在目标,确定它们是否在给定位置下,然后返回最接近屏幕的对象。提供了几种类型的射线投射器:

  • 图形射线投射器 (Graphic Raycaster) - 用于 UI 元素,位于画布上,并在画布中搜索
  • 2D 物理射线投射器 (Physics 2D Raycaster) - 用于 2D 物理元素
  • 物理射线投射器 (Physics Raycaster) - 用于 3D 物理元素
  • 当场景中存在并启用了射线投射器时,只要从输入模块发出查询,事件系统就会使用该射线投射器。

如果使用多个射线投射器,那么这些射线投射器都会进行针对性投射,并且结果将根据与元素的距离进行排序。


图形射线投射器


2D 物理射线投射器

//2d检测 鼠标下的物体
Ray myRay = Camera.main.ScreenPointToRay(Input.mousePosition);
Debug.Log(myRay);
//RaycastHit2D hit = Physics2D.Raycast(new Vector2(myRay.origin.x, myRay.origin.y), Vector2.down,2);
RaycastHit2D hit = Physics2D.Raycast(new Vector2(createPostion.x, createPostion.y), Vector2.down, 2);
Debug.Log(hit);
Debug.Log(hit.collider);

物理射线投射器

if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
print(hit.transform.name); //打印选中物体的名字
}
}