码迷,mamicode.com
首页 > 编程语言 > 详细

unity3d-射线(Ray)

时间:2015-01-09 18:51:12      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:

射线Ray

射线是一个点向另外一个点发生的一条线,一旦与其他模型发生碰撞,他将停止发射。注意这条件是逻辑上的,界面上看不到。

一般使用射线判断是否发射至某个游戏对象上或者获得鼠标点击的游戏对象等。

用Camera.main.ScreenPointToRay向屏幕发射一条射线。

 

1     Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
2     RaycastHit hit;
3    if(Physics.Raycast(ray,out hit)//如果命中
4     {
5      //hit.collider.gameObject可以获得命中的游戏对象
6     }

 

 

Raycast和RaycastAll的区别

Raycast:一旦与其他模型发生碰撞,他将停止发射。

RaycastAll:投射一条光线并返回所有碰撞

我们来做个小案例演示下。这个两个的区别。我分别模拟鼠标左键和右键单击并发射射线,

1:Raycast碰撞的物体。设置为蓝色

1:RaycastAll碰撞的所有物体。设置为红色

技术分享

从上图可以看出来。当右键单击。射线穿过了两个cube,都变成了红色。 可以在scene中可以看到效果,而左键单击变成了蓝色。

 

 1 void Update()
 2     {
 3 
 4         if (Input.GetMouseButtonDown(0)) //单击鼠标左键
 5         {
 6             //案例一:演示Raycast,
 7             Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
 8             RaycastHit hit;
 9             if (Physics.Raycast(ray, out hit)) //如果命中,则改变为蓝颜色
10             {
11                 hit.transform.renderer.material.color = Color.blue;
12                 //hit.collider.gameObject.transform.renderer.material.color = Color.red;
13             }
14 
15 
16         }
17 
18         if (Input.GetMouseButtonDown(1))//单击鼠标右键
19         {
20             Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
21             //案例二:演示RaycastAll
22             RaycastHit[] hi = Physics.RaycastAll(ray);
23             if (hi.Length > 0)
24             {
25                 for (int i = 0; i < hi.Length; i++) //改变所有命中对象的为红颜色
26                 {
27                     hi[i].collider.transform.renderer.material.color = Color.red;
28                 }
29             }
30         }
31     }

 

天空盒子(Skyboxes)

游戏场景中有没有发现天空是晴朗的艳阳天,看着心情都舒服很多。这是unity自带的包,操作如下:

1:导包

 

技术分享

 

2:导入完成后可以在资源文件夹中看到

技术分享

3:设置场景中的天空的渲染方式

技术分享

两种方式都可以设置:直接拖拽或者打开窗口选择。

技术分享

unity3d-射线(Ray)

标签:

原文地址:http://www.cnblogs.com/niboy/p/4213761.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!