射线的应用范围比较广音效,广泛应用于
例如unity中的射线,自动巡逻的敌人在发现视野前方的玩家时就会攻击玩家。 这时候就需要用到射线了。
接下来我们通过一个案例来了解一下光线在游戏开发中的应用。
案例设计
在 Unity 3D 中创建简单的三维场景。 场景中有立方体和平面。 Plane用作地面,Cube用来拾取物体进行测试。
单击立方体时游戏图片,它会发出光线,并且控制台面板中会出现“拾取”一词。
案例实施
创建一个平面 (0, 0, 0) 和一个球 (0, 1, 0),使球放置在平面上方。
创建一个 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。 运行测试。
文章来源:https://www.w3cschool.cn/unity3d_jc/unity3d_jc-hx5g388s.html