版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Unity3D 射线碰撞检测 +LayerMask 的使用 转个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停 止发射 。用途:在 unity 中射线应用范围比较广, 多用于碰撞检测 (如: 子弹飞行是否击中目标) 、角色移动 等。相关 API :1、Ray Camera.main.ScreenPointToRay(Vector3 pos)返回一条射线 Ray 从摄像机到屏幕指定一个点2、Ray Camera.main.ViewportPointToRay(Vector3 pos)返回一条射线 Ray 从摄像机到视口 (视口之外无效) 指定 个点3、Ray 射线类4
2、、RaycastHit 光线投射碰撞信息5、bool Physics.Raycast(Vector3 origin, Vector3 direction,float distance, int layerMask)当光线投射与任何碰撞器交叉时为真,否则为假。bool Physics.Raycast(Ray ray, Vector3 direction,RaycastHit out hit, float distance, int layerMask)在场景中投下可与所有碰撞器碰撞的一条光线,并返回碰 撞的细节信息 ()。bool Physics.Raycast(Ray ray, float d
3、istance, int layerMask)当光线投射与任何碰撞器交叉时为真,否则为假。bool Physics.Raycast(Vector3 origin, Vector3 direction,RaycastHit out hit,float distance, int layerMask)当光线投射与任何碰撞器交叉时为真,否则为假。注意:如果从一个球型体的内部到外部用光线投射,返回 为假。参数理解:origin : 在世界坐标中射线的起始点direction:射线的方向distance:射线的长度hit: 使用c #中out关键字传入一个空的碰撞信息类,然后碰撞后赋值。可以得到碰撞物体
4、的transform,rigidbody,point 等信息。layerMask: 只选定 Layermask 层内的碰撞器,其它层内碰撞器忽略。 选择性的碰撞6、RaycastHit RaycastAll(Ray ray, float distance, int layerMask)投射一条光线并返回所有碰撞,也就是投射光线并返回个 RaycastHit 结构体。列子如下:using UnityEngine;using System.Collections;public classRayTest : MonoBehaviour / Use this for initializationvoi
5、d Start ()mainCrma = Camera.main;private Camera mainCrma;private RaycastHit objhit;private Ray _ray;void Update ()if(Input.GetMouseButtonDown(0)_ray=mainCrma.ScreenPointToRay(Input.mousePosition);/ 从摄像机发出一条射线 ,到点击的坐标显示Debug.DrawLine(_ray.origin,objhit.point,Color.red,2);/条射线,只有在 scene 视图中才能看到if(Phys
6、ics.Raycast (_ray, out objhit, 100)GameObject gameObj =objhit.collider.gameObject;Debug.Log(Hit objname:+gameO+Hit objlayer:+gameObj.layer);layerMask 参数:Raycast (ray :Ray, out hitInfo : RaycastHit, distance : float =Mathf.Infinity, layerMask : int = kDefaultRaycastLayers)其实很简单: 1 <<10 打
7、开第 10 的层。(1 << 10)打开除了第 10 之外的层。(1 << 0)打开所有的层。(1 << 10) | (1 << 8) 打开第 10 和第 8 的层。列子如下:/ Use this forusing UnityEngine;using System.Collections;public classLayerMaskTest : MonoBehaviour initializationvoid Start ()mainCrma =Camera.main;mask =1<<( LayerMask.NameToLayer(c
8、ube);/实例化 mask到 cube 这个自定义的层级之上。/privateLayerMask mask 1<<10;private LayerMask mask;private Camera mainCrma;private RaycastHit objhit;private Ray _ray;void Update ()if(10);(Input.GetMouseButtonDown(0)_ray=mainCrma.ScreenPointToRay(Input.mousePosition);/ 从摄像机发出一条射线 ,到点击的坐标划出Debug.DrawLine(_ray.origin,objhit.point,Color.red,2);/射线,只有在 scene 视图中才能看到if(Physics.Raycast (_ray,out objhit, 100, mas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025企业劳务合同范本
- 2024年度室内拆除工程合同合同版
- 2024年度软件开发暑期工合同:应用程序开发与测试2篇
- 2024年度石膏板生产设备租赁合同2篇
- 2024年度医疗信息化系统定制开发与实施合同2篇
- 2024年度区块链技术研发与委托应用合同
- 2024年桥涵施工劳务人员福利保障合同3篇
- 2024年度建筑项目物业管理合同
- 2024年商业代理居间合作条款合同一
- 外包劳务合同
- 愚公移山英文 -中国故事英文版课件
- 国开经济学(本)1-14章练习试题及答案
- 数据库及数据仓库精要Adhoc报表系统
- 《口腔修复学(一)》教学大纲
- 商业综合体(购物中心)商业运营管理内容及管理手册
- 公路工程决算表格(范本)
- 《口腔修复学》实验教学大纲
- 安全生产费用使用总计划创新
- 实验室内审员资格测验题及答案
- 高三数学考试情况分析及复习建议
- 光学设计与光学工艺
评论
0/150
提交评论