知识点:射线确定位置及目标 屏幕坐标与世界坐标相转换控制屏幕准星位置及显隐
摄像机位置投放射线 准心效果↓
using UnityEngine;
using System.Collections;
/// <summary>
/// 摄像机位置投放射线 准心效果
/// </summary>
public class RayUI : MonoBehaviour
{
public RectTransform UI;//准星
private RaycastHit hit;
private Ray ray;
public LayerMask layer;//遮罩层
private void Update()
{
//返回一条射线从摄像机通过一个屏幕点(鼠标落于屏幕的点)
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, 50, layer.value))
{
UI.gameObject.SetActive(true);
UI.position = Input.mousePosition;
}
else
UI.gameObject.SetActive(false);
}
}
第一人称枪口 投放准星效果(与上面的区别是射线从枪口出发)↓
using UnityEngine;
using System.Collections;
/// <summary>
/// 摄像机位置投放射线 准心效果
/// </summary>
public class RayUI : MonoBehaviour
{
public RectTransform UI;//准星
public Transform gunPos;//枪口位置
private RaycastHit hit;
public LayerMask layer;//遮罩层
private void Update()
{
// 物理投放射线(起始位置,方向)
if(Physics.Raycast(gunPos.psoition,gunPos.forward,out hit,10,layer.value))
{
Vector3 gunUI=Camera.main.WordToScreenPoint(hit.point);
UI.gameObject.SetActice(true);
UI.position=gunUI;
}
else
UI.gameObject.SetActive(false);
}