首先,射线检测的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()) //思路:当点击鼠标左键的时候,以鼠标在摄像机屏幕位置发射一个射线进行检测
{
//这里将屏幕坐标的鼠标位置存入一个vector3里面
mousePos.x = Input.mousePosition.x;
mousePos.y = Input.mousePosition.y;
mousePos.z = ; //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, , << LayerMask.NameToLayer("Monster")))
{
GameObject go = cameraHit.transform.gameObject; //这是检测到的物体
}
}
}
}

Unity的学习笔记(射线检测)的更多相关文章

  1. Layabox 3D游戏开发学习笔记---射线检测,鼠标控制物体运动

    核心要点:3D物体碰撞是靠射线检测,射线与碰撞器相撞获取对应的碰撞点信息. class RayPicking03 { private ray: Laya.Ray; private point: Lay ...

  2. Unity Shader学习笔记-1

    本篇文章是对Unity Shader入门精要的学习笔记,插图大部分来自冯乐乐女神的github 如果有什么说的不正确的请批评指正 目录 渲染流水线 流程图 Shader作用 屏幕映射 三角形遍历 两大 ...

  3. 从0开始学习Unity的学习笔记(I 界面学习和简单模型拼装)

    先给一个大致今天学习的图,然后后面是细节 1.下载Unity :官网下载需要版本 2.Unity安装:一定不要有中文路径:一台电脑可以安装不同版本的Unity,但是要安装在不同的文件夹下: 3. 新建 ...

  4. 【Unity Shader学习笔记】Unity基础纹理-单张纹理

    1 单张纹理 1.1 纹理 使用纹理映射(Texture Mapping)技术,我们把一张图片逐纹素(Texel)地控制模型的颜色. 美术人员建模时,会在建模软件中利用纹理展开技术把纹理映射坐标(Te ...

  5. JavaScript学习笔记:检测数组方法

    检查数组的方法 很多时候我们需要对JavaScript中数据类型(Function.String.Number.Undefined.Boolean和Object)做判断.在JavaScript中提供了 ...

  6. Unity sqlite学习笔记一

    1.SQLITE的常识 SQLite是一个开源免费的数据库,一般用于嵌入系统或者小规模的应用软件开发中,你可以像使用Access一样使用它. sqlite的主要优点:零配置(Zero Configur ...

  7. unity 3D 学习笔记

    1.父对象的初始位置设,即刚开始的空对象的根节点位置应当设置成(0,0,0) 这样设置可以避免以后出现奇怪的坐标. GameObject实际上就是一些组件的容器. unity 使用公用变量原因是,在U ...

  8. unity ray和line射线检测

    RaycastHit 光线投射碰撞 Struct Structure used to get information back from a raycast. 用来获取从raycast函数中得到的信息 ...

  9. Spring学习笔记--自动检测

    要使用自动检测,我们需要用到<context:annotation-scan>标签.<context:annotation-scan>元素除了完成与<context:an ...

随机推荐

  1. Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群

    一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...

  2. 一次容器化springboot程序OOM问题探险

    背景 运维人员反馈一个容器化的java程序每跑一段时间就会出现OOM问题,重启后,间隔大概两天后复现. 问题调查 一查日志 由于是容器化部署的程序,登上主机后使用docker logs Contain ...

  3. Java程序连接数据库

    /** * 了解: 利用 Driver 接口的 connect 方法获取连接 */ // 第一种实现 /** * 了解: 利用 Driver 接口的 connect 方法获取连接 */ @Test p ...

  4. Java 集合转换(数组、List、Set、Map相互转换)

    package com.example.test; import java.util.ArrayList; import java.util.Arrays; import java.util.Hash ...

  5. spring中使用aop配置事务

    spring的事务配置有5种方式,这里记录其中的一种:基于tx/aop声明式事务配置 在之前spring aop介绍和示例这篇所附代码的基础上进行测试 一.添加save方法 1.在testDao类里添 ...

  6. 第九周java动手动脑

    1.使用Files. walkFileTree()找出指定文件夹下所有扩展名为.txt和.java的文件. import java.io.IOException; import java.nio.fi ...

  7. 读《深入理解Elasticsearch》点滴-基础概念

    Lucene的概念 document:以json的形式体现,搜索和搜索的主要载体 field:document的一个部分 term(词项):代表文本中的一个词 token(词条):term在field ...

  8. 为什么要学习go语言

    终于等到你!Go语言--让你用写Python代码的开发效率编写C语言代码. 为什么互联网世界需要Go语言 世界上已经有太多太多的编程语言了,为什么又出来一个Go语言? 硬件限制:摩尔定律已然失效 摩尔 ...

  9. LeetCode正则表达式匹配

    题目描述 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 ...

  10. Android资源管理利器Resources和AssetManager

    前言  : Android工程在运行的时候往往需要引用资源.使用 Resources 来获取 res 目录下的各种与设备相关的资源.而使用 AssetManager 来获取 assets 目录下的资源 ...