• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >游戏开发 > Unity 3D射线

Unity 3D射线

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2022-04-30

匿名通过本文主要向大家介绍了等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
射线是三维世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射。

射线应用范围比较广,广泛应用于路径搜寻、AI逻辑和命令判断中。

例如,自动巡逻的敌人在视野前方发现玩家的时候会向玩家发起攻击,这时候就需要使用射线了。

接下来我们通过一个案例来了解射线在游戏开发中的应用。

实践案例:拾取物体

案例构思

本案例旨在通过在场景中拾取 Cube 对象,实现射线功能。

案例设计

本案例在 Unity 3D 内创建一个简单的三维场景,场景内放有 Cube 和 Plane,Plane 用于充当地面,Cube 用于做拾取物体测试。

当单击 Cube 时,它会发出一条射线,同时在 Console 面板中出现pick up字样。

案例实施

步骤 1):创建一个平面(0,0,0)和一个小球(0,1,0),使小球置于平面上方,如下图所示。

创建三维场景

步骤 2):创建 C# 脚本,将其命名为 RayTest,输入如下代码。
using UnityEngine;using System.Collections;public class RayTest:MonoBehaviour{    void Update(){        if(Input.GetMouseButton(0)){            //从摄像机到单击处发出射线            Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);            RaycastHit hitInfo;            if(Physics.Raycast(ray, out hitInfo)){                //画出射线, 只有在Scene视图中才能看到                Debug.DrawLine(ray.origin, hitInfo.point);                GameObject gameObj=hitInfo.collider.gameObject;                Debug.Log("click object name is"+gameObj.name);                //当射线碰撞目标的标签是Pickup时, 执行拾取操作                if(gameObj.tag=="Pickup"){                    Debug.Log("pick up!");                }            }        }    }}
上述代码中,首先创建一个 Ray 对象,从摄像机发出到单击处的射线。

Debug.DrawLine 函数将射线可视化。接下来进行判断,如果鼠标单击的物体标签是 Pickup,则在控制面板中输出 pick up 字样。

步骤 3):将脚本链接到主摄像机上。

步骤 4):为 Cube 添加 Pickup 标签。

步骤 5):运行测试,效果如下图所示。

射线测试效果图
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 急!求大神解决TiledMap读取图片错位的问题!
  • 2017-06-05 离线地图哪个地图引擎比较好?求介绍。
  • 2017-06-05 cocos2d-x事件监听封装在自定义的精灵类中
  • 2017-06-05 cocos2d-x调度器的问题
  • 2017-06-05 3d引擎相关
  • 2017-06-05 ITweenRotation这个怎么用啊
  • 2022-04-30Unity 3D Skin控件
  • 2017-06-05 图形引擎,游戏引擎开发方向在深圳有什么比较好的公司推荐
  • 2017-06-05 在it行业里,程序员做哪方面开发收入最高?
  • 2017-06-05 大神您好,第二次的枪声会覆盖第一次的枪声,导致没播完

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • cocos2dx-223
    • 微软加盟Cocos2d-x将赴广州办沙龙
    • cocos2d-x调度器的问题
    • shader内部定义的变量能访问吗
    • gamemodule已停止工作
    • Java用Cocos写游戏的程序,靠谱吗?写游戏用什么语言比较敏接??
    • 图形上色游戏的区域判断算法
    • 原创cocos2d-x横版手游《打小三》源码下载!
    • unity3d官方网站为什么看不了教程视频,浏览器问题吗,需要谷歌翻墙吗?
    • NullReferenceException这是怎么回事

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有