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

         游戏中经常会有鼠标移动到某个对象上来拾取它的功能,我们可以用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);
            }
        }
	}
}

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

     

附上项目源码下载地址:点此下载

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值