当前位置:   article > 正文

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

unity 点击屏幕获取射线

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

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

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

                

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

  1. using UnityEngine;
  2. using System.Collections;
  3. public class rayScript : MonoBehaviour {
  4. // Use this for initialization
  5. void Start () {
  6. }
  7. // Update is called once per frame
  8. void Update () {
  9. //创建一条射线,产生的射线是在世界空间中,从相机的近裁剪面开始并穿过屏幕position(x,y)像素坐标(position.z被忽略)
  10. Ray ray = camera.ScreenPointToRay(Input.mousePosition);
  11. //RaycastHit是一个结构体对象,用来储存射线返回的信息
  12. RaycastHit hit;
  13. //如果射线碰撞到对象,把返回信息储存到hit中
  14. if (Physics.Raycast(ray, out hit))
  15. {
  16. //如果碰撞的对象是小球,则销毁它
  17. if (hit.transform.gameObject.name == "Sphere")
  18. {
  19. Destroy(hit.transform.gameObject);
  20. }
  21. }
  22. }
  23. }

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

     

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/101035
推荐阅读
相关标签
  

闽ICP备14008679号