您的位置:首页 > 移动开发 > Unity3D

Unity3D学习笔记07:射线Ray实现点击拾取

2013-08-24 21:59 639 查看
         游戏中经常会有鼠标移动到某个对象上来拾取它的功能,我们可以用Unity3D中的射线Ray实现这一效果。原理是在我们鼠标的位置,从屏幕射出一条射向世界空间的射线,当这条射线碰撞到我们需要拾取的对象时,我们就销毁对象,把它添加到我们的背包中。

         我们来做一个简单的Demo,我们在场景中添加一个方块Cube,一个小球Sphere,当我们鼠标放在方块上时没有任何反应,而当我们把鼠标放在小球上时,小球会消失。

        新建一个项目,我们命名为“RayTest”,然后在场景中新建一个小球,方块,和添加灯光,最终结果如图所示:

                


         新建一个C#脚本文件,重命名为“rayScript”,具体代码如下所示:

using UnityEngine;
using System.Collections;

public class rayScript : MonoBehaviour {

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

//创建一条射线,产生的射线是在世界空间中,从相机的近裁剪面开始并穿过屏幕position(x,y)像素坐标(position.z被忽略)
Ray ray = camera.ScreenPointToRay(Input.mousePosition);
//RaycastHit是一个结构体对象,用来储存射线返回的信息
RaycastHit hit;
//如果射线碰撞到对象,把返回信息储存到hit中
if (Physics.Raycast(ray, out hit))
{
//如果碰撞的对象是小球,则销毁它
if (hit.transform.gameObject.name == "Sphere")
{
Destroy(hit.transform.gameObject);
}
}
}
}


        运行,我们可以看到当鼠标放在小球上时,小球消失了。

     


附上项目源码下载地址:点此下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Unity3D Ray 射线