射线在三维世界中一个点向一个方向发射的线

射线在三维世界中一个点向一个方向发射的线

射线的应用范围比较广音效,广泛应用于

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

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

案例设计

在 Unity 3D 中创建简单的三维场景。 场景中有立方体和平面。 Plane用作地面,Cube用来拾取物体进行测试。

单击立方体时游戏图片,它会发出光线,并且控制台面板中会出现“拾取”一词。

案例实施

创建一个平面 (0, 0, 0) 和一个球 (0, 1, 0),使球放置在平面上方。

unity射线检测耗时_unity射线检测_unity中的射线

创建一个 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 函数可视化光线。 接下来unity中的射线,做出判断。 如果鼠标点击的对象标签为“拾取”,则控制面板中会输出“拾取”字样。

将脚本链接到主摄像机。 将 Pickup 标签添加到 Cube。 运行测试。

unity射线检测耗时_unity射线检测_unity中的射线

文章来源:https://www.w3cschool.cn/unity3d_jc/unity3d_jc-hx5g388s.html