unity中Ray、RaycastHit 、Raycast(小白之路)
1.Ray
Ray(Vector3 origin, Vector3 direction)
Ray:在程序中可以理解为射线,就是以某个位置(origin)朝某个方向(direction)的一条射线,是一个三维坐标
Ray ray = new Ray(transform.position, transform.forward);
2.RaycastHit
RaycastHit hitInfo;
它的结构体如下:
public struct RaycastResult
{
//
// Fields
//
public BaseRaycaster module; // BaseInputModule that raised the hit. public float distance; // Distance to the hit. public float index; // Hit index. public int depth; //The relative depth of the element. public int sortingLayer; // The SortingLayer of the hit object. 官方解释的这两个一样,完全不明白 public int sortingOrder; // The SortingOrder for the hit object. public Vector3 worldPosition; // The world position of the where the raycast has hit. public Vector3 worldNormal; // The normal at the hit location of the raycast. public Vector2 screenPosition; // The screen position from which the raycast was generated. //
// Properties
//
public GameObject gameObject { // The GameObject that was hit by the raycast.
get;
set;
} public bool isValid { // Is there an associated module and a hit GameObject.
get;
} //
// Methods
//
public void Clear (); public override string ToString ();
}
它是用于存储射线碰撞到的第一个对象信息,所以需要提前创建这个对象,用于信息的碰撞信息的存储;
3.Raycast
public static bool Raycast(Ray ray, out RaycastHit hitInfo, float maxDistance, int layermask );
ray:射线结构体的信息,包括起点,方向;也就是一条射线
hitinfo:这条射线所碰撞物体的相关信息;
maxDistance:这条射线的最大距离;
layermask:这条射线在哪层上进行碰撞
这个函数的意思就是:以射线ray经过的maxDistance长度之内,与第一个对象进行的物理碰撞的信息,存储在hitInfo中;如果有碰撞物体,返回true, 反之false;
1.现在我要在一个层中控制人物方向(面对方向就可以这样做)
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hitInfo;
if(Physics.Raycast(ray, out hitInfo, , groundLayerIndex))
{
Vector3 target = hitInfo.point;
target.y = transform.position.y;
transform.LookAt(target);
}
2.如我要接受子弹碰撞信息,并且控制子弹设计方向
Ray ray = new Ray(transform.position, transform.forward);
RaycastHit hitInfo;
if(Physics.Raycast(ray,out hitInfo))
{
lineRenderer.SetPosition(, hitInfo.point);
}
else
{
lineRenderer.SetPosition(, transform.position + transform.forward * );
}
unity中Ray、RaycastHit 、Raycast(小白之路)的更多相关文章
- Unity中Mesh分解与边缘高亮加上深度检测
一个比较简单的需求,不过遇到些坑,记录下. 房间有多个模型,每个模型可能多个SubMesh,点击后,需要能具体到是那个SubMesh,并且在这个SubMesh上显示边缘高光,以及能个性这单个SubMe ...
- 在Unity中创建攻击Slot系统
http://www.manew.com/thread-109310-1-1.html 马上注册,结交更多好友,享用更多功能,让你轻松玩转社区. 您需要 登录 才可以下载或查看,没有帐号?注册帐号 ...
- Unity中的输入
目录 移动平台的输入 触摸 触摸相关的函数 触摸的一个示例 重力加速器 在Unity中访问重力加速器的信息 重力加速器示例 虚拟键盘 其他输入 传统的输入 鼠标,键盘,控制杆,手柄 虚拟控制轴(Vir ...
- unity3d ppsspp模拟器中的post processing shader在unity中使用
这个位置可以看到ppsspp的特殊处理文件位置来看看这些特效 用来测试的未加特效图片 ppsspp: 传说系列一生爱---英杰传说 最后的战士 aacolor 是关于饱和度,亮度,对比度,色调的调节, ...
- Unity中资源打包成Assetsbundle的资料整理
最近在研究Unity中关于资源打包的东西,网上看了一堆资料,这里做个整合,说整合,其实也就是Ctrl-C + Ctrl-V,不是原创 首先为了尊重原创,先贴出原创者的文章地址: http://blog ...
- 介绍Unity中相机的投影矩阵与剪切图像、投影概念
这篇作为上一篇的补充介绍,主要讲Unity里面的投影矩阵的问题: 上篇的链接写给VR手游开发小白的教程:(三)UnityVR插件CardboardSDKForUnity解析(二) 关于Unity中的C ...
- Jacoco+Jenkines小白之路
Jacoco+Jenkines小白之路 最近工作中正在推广jacoco的增量覆盖率的统计,想学习一波,纯粹采坑中,适合小白学习jacoco. 一.代码覆盖率 引入代码覆盖率 : 代码覆盖率是指对现有代 ...
- 【Unity】贝塞尔曲线关于点、长度、切线计算在 Unity中的C#实现
原文:[Unity]贝塞尔曲线关于点.长度.切线计算在 Unity中的C#实现 写在前面 最近给项目做了个路径编辑,基本思路是满足几个基本需求: [额外说明]其实本篇和这个没关系,可以跳过" ...
- Unity中使用Attribute
Attribute是c#的语言特性 msdn说明如下: The Attribute class associates predefined system information or user-def ...
随机推荐
- Leetcode题解(21)
62. Unique Paths 题目 分析: 机器人一共要走m+n-2步,现在举个例子类比,有一个m+n-2位的二进制数,现在要在其中的m位填0,其余各位填1,一共有C(m+n-2,m-1)种可能, ...
- sql语句练习题及答案
表结构 创建表数据 SET NAMES utf8; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- ...
- 反馈法学习设计模式(一)——策略模式Strategy Pattern
简介(Introduction) 之前学习Java8实战时,遇到一个很好的策略模式示例.便想着借着这个示例结合反馈式的方法来,学习策略设计模式,也以便后面反复琢磨学习. 首先我们通过练习,逐步写出符合 ...
- C# Post和Get请求
Get请求: /// <summary> /// 调用ToxyzAPI /// </summary> /// <param name="requetid&quo ...
- 关于jQuery.click()函数
最近接手了前同事的项目,关于使用线程控制实现代码热插拔功能! 在线程中,使用了ChatWebSocketHandler,与前台进行实时交互,今天我拿到需求是这样的,结合chatWebSocketHan ...
- 【Kafka源码】KafkaController启动过程
[TOC] 之前聊过了很多Kafka启动过程中的一些加载内容,也知道了broker可以分为很多的partition,每个partition内部也可以分为leader和follower,主从之间有数据的 ...
- java非阻塞IO(NIO)流程
单线程 多线程(Netty/Mina)
- [转载] su和sudo
转载自http://www.cnblogs.com/haichuan3000/articles/2123633.html Mandriva 说也奇怪,用root登录的用户比一般用户还难用,当初用FC6 ...
- MySQL相关的书籍
http://item.jd.com/11389754.htmlhttp://item.jd.com/11390423.html http://item.jd.com/11398721.html
- Python之re正则模块二
13.编译的标志 可以用re.I.re.M等参数,也可以直接在表达式中添加"?(iLmsux)"标志 *s:单行,“.”匹配包括换行符在内的所有字符 *i:忽略大小写 *L:让&q ...