Unity学习笔记:枪口瞄准物体屏幕投放准星

知识点:射线确定位置及目标 屏幕坐标与世界坐标相转换控制屏幕准星位置及显隐

摄像机位置投放射线 准心效果↓

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);  
}

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页