• Unity的学习笔记(射线检测)


    首先,射线检测的API是这样的,网上找了一下,这个图片看得很清楚:

    接下来是自己使用这个进行测试

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    //基本语法:public Ray ScreenPointToRay(Vector3 position);
    //其中参数position为屏幕位置参考点。
    //功能说明:此方法的作用是可以从Camera的近视口nearClip向前发射一条射线到屏幕上的position点。
    //参考点position用实际像素值的方式来决定Ray到屏幕的位置。
    //参考点position的X轴分量或Y轴分量从0增长到最大值时,Ray从屏幕一边移动到另一边。
    //当Ray未能碰撞到物体时hit.point返回值为Vector3(0,0,0)。参考点position的Z轴分量值无效。
    
    
    
    public class PlayerMouseHit : MonoBehaviour {
        Ray camerRay;                       //声明一个射线
        Vector3 mousePos = new Vector3();   //记录将鼠标(因为屏幕坐标没有z,所以下面是将z设为0)
        RaycastHit cameraHit;               //用于记录射线碰撞到的物体
    
        void Start()
        {
    
        }
        void Update()
        {
            
    
            if (Input.GetMouseButtonDown(0))  //思路:当点击鼠标左键的时候,以鼠标在摄像机屏幕位置发射一个射线进行检测
            {
                //这里将屏幕坐标的鼠标位置存入一个vector3里面
                mousePos.x = Input.mousePosition.x;
                mousePos.y = Input.mousePosition.y;
                mousePos.z = 0;
    
                //Ray ray=Camera.main.ScreenPointToRay(Vector3 Pos):返回一条射线由摄像机近裁面发射经过Pos的射线。
                camerRay = Camera.main.ScreenPointToRay(mousePos);
    
                //public static bool Raycast(Ray ray, RaycastHit hitInfo, float distance, int layerMask);
                //物理检测射线,out一个RaycastHit类型的 hitInfo 信息,float distance是射线长度,int layerMask需要转换二进制,所以有如下操作
                if (Physics.Raycast(camerRay, out cameraHit, 10, 1 << LayerMask.NameToLayer("Monster")))
                {
                   GameObject go = cameraHit.transform.gameObject; //这是检测到的物体
                }
            }
        }
    }
  • 相关阅读:
    cocos2dx-lua捕获用户touch事件的几种方式
    Java并发编程之闭锁CountDownLatch简单介绍
    opencv视频播放
    完全备份、差异备份以及增量备份的区别
    如何实现文件增量同步——算法
    Oracle提示“资源正忙,需指定nowait”的解决方案
    oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT
    一次oracle大量数据删除经历
    rownum的使用-分页
    sql语句分页多种方式ROW_NUMBER()OVER
  • 原文地址:https://www.cnblogs.com/takanashi/p/11028786.html
Copyright © 2020-2023  润新知