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

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

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

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5//基本语法:public Ray ScreenPointToRay(Vector3 position); 6//其中参数position为屏幕位置参考点。 7//功能说明:此方法的作用是可以从Camera的近视口nearClip向前发射一条射线到屏幕上的position点。 8//参考点position用实际像素值的方式来决定Ray到屏幕的位置。 9//参考点position的X轴分量或Y轴分量从0增长到最大值时,Ray从屏幕一边移动到另一边。 10//当Ray未能碰撞到物体时hit.point返回值为Vector3(0,0,0)。参考点position的Z轴分量值无效。 11 12 13 14public class PlayerMouseHit : MonoBehaviour { 15 Ray camerRay; //声明一个射线 16 Vector3 mousePos = new Vector3(); //记录将鼠标(因为屏幕坐标没有z,所以下面是将z设为0) 17 RaycastHit cameraHit; //用于记录射线碰撞到的物体 18 19 void Start() 20 { 21 22 } 23 void Update() 24 { 25 26 27 if (Input.GetMouseButtonDown(0)) //思路:当点击鼠标左键的时候,以鼠标在摄像机屏幕位置发射一个射线进行检测 28 { 29 //这里将屏幕坐标的鼠标位置存入一个vector3里面 30 mousePos.x = Input.mousePosition.x; 31 mousePos.y = Input.mousePosition.y; 32 mousePos.z = 0; 33 34 //Ray ray=Camera.main.ScreenPointToRay(Vector3 Pos):返回一条射线由摄像机近裁面发射经过Pos的射线。 35 camerRay = Camera.main.ScreenPointToRay(mousePos); 36 37 //public static bool Raycast(Ray ray, RaycastHit hitInfo, float distance, int layerMask); 38 //物理检测射线,out一个RaycastHit类型的 hitInfo 信息,float distance是射线长度,int layerMask需要转换二进制,所以有如下操作 39 if (Physics.Raycast(camerRay, out cameraHit, 10, 1 << LayerMask.NameToLayer("Monster"))) 40 { 41 GameObject go = cameraHit.transform.gameObject; //这是检测到的物体 42 } 43 } 44 } 45}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )