Unity3D学习笔记07:射线Ray实现点击拾取
2013-08-24 21:59
639 查看
游戏中经常会有鼠标移动到某个对象上来拾取它的功能,我们可以用Unity3D中的射线Ray实现这一效果。原理是在我们鼠标的位置,从屏幕射出一条射向世界空间的射线,当这条射线碰撞到我们需要拾取的对象时,我们就销毁对象,把它添加到我们的背包中。
我们来做一个简单的Demo,我们在场景中添加一个方块Cube,一个小球Sphere,当我们鼠标放在方块上时没有任何反应,而当我们把鼠标放在小球上时,小球会消失。
新建一个项目,我们命名为“RayTest”,然后在场景中新建一个小球,方块,和添加灯光,最终结果如图所示:
新建一个C#脚本文件,重命名为“rayScript”,具体代码如下所示:
运行,我们可以看到当鼠标放在小球上时,小球消失了。
附上项目源码下载地址:点此下载
我们来做一个简单的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); } } } }
运行,我们可以看到当鼠标放在小球上时,小球消失了。
附上项目源码下载地址:点此下载
相关文章推荐
- 射线Ray实现点击拾取
- unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- 【unity3d游戏开发之基础篇】unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- Unity 使用物理射线(Physics.Raycast),实现扇形区域碰撞检测三种方法
- 【unity3d游戏开发之基础篇】unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- OpenGL: 通过射线求交实现物体的拾取
- Unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- Unity 使用物理射线(Physics.Raycast),实现扇形区域碰撞检测三种方法
- unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- UE4实现向鼠标点击处发射射线
- 通过射线求交实现物体的拾取
- Unity3d通过射线来实现点击地面,获取点击坐标
- 【unity3d游戏开发之基础篇】unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- 射线的原理用法以及一个利用射线实现简单拾取的小例子
- RecyclerView 超简单item点击实现
- JS实现点击图片在当前页面放大并可关闭的漂亮效果
- Android实现点击通知栏后,先启动应用再打开目标Activity
- Android实现点击两次back退出APP
- 实现Material Design风格的点击水波荡漾效果