赞
踩
定义你需要射向的位置坐标并确定他是屏幕坐标,这里我用鼠标位置
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);
- }
- }
- }
流程思路与之前相同:
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<RaycastResult> result = new List<RaycastResult>();
- EventSystem.current.RaycastAll(SaveMousePosition, result);
- foreach (RaycastResult raycast in result)
- {}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。