unity3d-射线(Ray)
射线Ray
射线是一个点向另外一个点发生的一条线,一旦与其他模型发生碰撞,他将停止发射。注意这条件是逻辑上的,界面上看不到。
一般使用射线判断是否发射至某个游戏对象上或者获得鼠标点击的游戏对象等。
用Camera.main.ScreenPointToRay向屏幕发射一条射线。
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray,out hit)//如果命中
{
//hit.collider.gameObject可以获得命中的游戏对象
}
Raycast和RaycastAll的区别
Raycast:一旦与其他模型发生碰撞,他将停止发射。
RaycastAll:投射一条光线并返回所有碰撞
我们来做个小案例演示下。这个两个的区别。我分别模拟鼠标左键和右键单击并发射射线,
1:Raycast碰撞的物体。设置为蓝色
1:RaycastAll碰撞的所有物体。设置为红色
从上图可以看出来。当右键单击。射线穿过了两个cube,都变成了红色。 可以在scene中可以看到效果,而左键单击变成了蓝色。
void Update()
{ if (Input.GetMouseButtonDown()) //单击鼠标左键
{
//案例一:演示Raycast,
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit)) //如果命中,则改变为蓝颜色
{
hit.transform.renderer.material.color = Color.blue;
//hit.collider.gameObject.transform.renderer.material.color = Color.red;
} } if (Input.GetMouseButtonDown())//单击鼠标右键
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//案例二:演示RaycastAll
RaycastHit[] hi = Physics.RaycastAll(ray);
if (hi.Length > )
{
for (int i = ; i < hi.Length; i++) //改变所有命中对象的为红颜色
{
hi[i].collider.transform.renderer.material.color = Color.red;
}
}
}
}
此时你是不是想看到那个射线的轨迹?我们可以通过GL画出来,但这里可以通过Debug.DrawLine()方法调试出来
注:这个轨迹只能在Scene视图中看到,
我们改动下上面的代码。在://案例一:演示Raycast,中改动如下:
if (Physics.Raycast(ray, out hit)) //如果命中,则改变为蓝颜色
{
hit.transform.renderer.material.color = Color.blue; Debug.DrawLine(ray.origin, hit.point); //画轨迹
}
在Scene视图中可以看出,当命中游戏对象后。看到了轨迹。
天空盒子(Skyboxes)
游戏场景中有没有发现天空是晴朗的艳阳天,看着心情都舒服很多。这是unity自带的包,操作如下:
1:导包
2:导入完成后可以在资源文件夹中看到
3:设置场景中的天空的渲染方式
两种方式都可以设置:直接拖拽或者打开窗口选择。
unity3d-射线(Ray)的更多相关文章
- 【转】Unity3D 射线Ray实现点击拾取
游戏中经常会有鼠标移动到某个对象上来拾取它的功能,我们可以用Unity3D中的射线Ray实现这一效果.原理是在我们鼠标的位置,从屏幕射出一条射向世界空间的射线,当这条射线碰撞到我们需要拾取的对象时,我 ...
- 【unity3d游戏开发之基础篇】unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
原地址:http://www.cnblogs.com/xuling/archive/2013/03/04/2943154.html 最近开始研究U3D,它的强大就不多说了, 今天研究了研究射线相关东西 ...
- unity3d 射线的原理,基础用法
射线:射线是3D世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射 . Ray射线类和RaycastHit射线投射信息类是射线中常用的两个工具类. 用途:射线多 ...
- unity3d射线控制移动
看看效果图 代码: using UnityEngine; using System.Collections; public class T2 : MonoBehaviour { // Use this ...
- 【Unity3d】Ray射线初探-射线的原理及用法
http://www.xiaobao1993.com/231.html 射线是一个无穷的线,开始于origin并沿着direction方向. 当射线碰到物体后.它就会停止发射. 在屏幕中拉一个CUBE ...
- Unity3D 射线指定层获取GameObject 注意 LayerMask
这一篇是纯技术讨论,看过我前面文章的童鞋应该清楚,我的奔跑是靠鼠标响应的,鼠标点到哪就跑到哪,后来又有了界面,麻烦就来了,我的界面居然能点 穿.我不希望点界面的时候还能点到界面后面的地面上,角色傻不拉 ...
- unity3d 射线扫描 忽略图层
原地址:http://blog.csdn.net/w88193363/article/details/38331205 函数说明 static RaycastHit2D[] RaycastAll(Ve ...
- unity3D射线检测敌人是否在前方
//发射一条射线,去检测玩家是否在自己面前,用来随后的发射炮弹 bool isForward = false; var TranformShootPoint = ai.WorkingMemory.Ge ...
- threejs通过射线Ray获取指定的点
例:获取cube方向上的面的中点坐标(该cube默认方向为(0,1,0)) (中心点向cube quaternion 方向上发射射线,与正前方的面相交的点即为目标点; 由于ray只支持box和face ...
- Unity Ray 射线
射线:射线是3D世界一个向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射. 用途:射线范围比较广,多用于碰撞检测(如:子弹飞行是否击中目标).角色移动等. Ray是一个结 ...
随机推荐
- 关于 CommonJS AMD CMD UMD 规范的差异总结(转)
根据CommonJS规范,一个单独的文件就是一个模块.每一个模块都是一个单独的作用域,也就是说,在一个文件定义的变量(还包括函数和类),都是私有的,对其他文件是不可见的. // foo.js var ...
- MySQL DROP 大表时的注意事项
对于表的删除,因为InnoDB引擎会在table cache层面维护一个全局独占锁一直到DROP TABLE完成为止,这样,对于表的其他操作会被HANG住.对于较大的表来说,DROP TABLE操作可 ...
- sencha touch 百度地图扩展(2014-6-24)(废弃 仅参考)
扩展代码如下: Ext.define('ux.BMap', { alternateClassName: 'bMap', extend: 'Ext.Container', xtype: 'bMap', ...
- [转]OpenStack Keystone V3
Keystone V3 Keystone 中主要涉及到如下几个概念:User.Tenant.Role.Token.下面对这几个概念进行简要说明. User:顾名思义就是使用服务的用户,可以是人.服务或 ...
- Visual Studio 2013附加进程调试IE加载的ActiveX Control无效解决方法
默认Attach to选择了Automatically determine the type of code to debug,显示Native Code.但附加进程到iexplore.exe断点无法 ...
- http模拟登陆及发请求
首先声明下,如果服务端写入的cookie属性是HttpOnly的,程序是不能自动获取cookie的,需要人工登陆网站获取cookie再把cookie写死,如下图所示: http测试工具:http:// ...
- thinkCMF----使用自定义函数
thinkCMF使用自定义函数:app 下新建 common.php
- jsp页面中引入文件路径问题的解决方案(使用request获取项目路径)【原创】
在项目页面中,总会引入一些js和css,相对路径or绝对路径的选择就显得至关重要了!下面是项目中遇到的问题和解决方案,做一下记录! 环境: myEclipse创建工程,使用jsp+css+js,项目目 ...
- K-means中的K值选择
关于如何选择Kmeans等聚类算法中的聚类中心个数,主要有以下方法(译自维基): 1. 最简单的方法:K≍sqrt(N/2) 2. 拐点法:把聚类结果的F-test值(类间Variance和全局Var ...
- RGB颜色值与十六进制颜色码对照表
颜色码对照表 颜色 英文代码 形象描述 十六进制 RGB LightPink 浅粉红 #FFB6C1 255,182,193 Pink 粉红 #FFC0CB 255,192,203 Crimson 猩 ...