Unity中,我们要进行物理模拟和碰撞检测时,有三个重要的概念Ray、RaycastHit、Raycast。
其中,Ray可以理解为射线,它是一条从起点沿着特定方向延伸的无限长线段。
它的语法是:
Ray(Vector3 origin, Vector3 direction)
它定义了两个参数,一个起点位置和一个方向,通过Ray射线,可以用来模拟子弹、光线、玩家视线等。
RaycastHit可以理解为射线命中信息,他是一个数据结构,用于存储射线投射过程中的结果。当进行射线投射后,如果射线与场景中的物体相交,RaycastHit会存储与射线相交的物体的信息,如下图:

其中常用信息有:
- collider:相交物体的碰撞器组件。
- point:相交点的位置。
- normal:相交点的法线方向。
- distance:射线起点到相交点的距离。
一般我们通过使用Physics类的Raycast方法进行射线投射,然后把射线命中信息存储与RaycastHit。
Raycast则可以理解为射线投射,它是Physics类中的一种用于检测场景中物体碰撞的方法。我们使用该方法可以进行射线投射获取碰撞相关信息。
它的语法多大16个,但是我们常用的是:
bool Physics.Raycast(Ray ray, out RaycastHit hitInfo, float maxDistance, int layerMask);
其中,
- ray:要投射的射线对象。
- hitInfo:射

本文详细介绍了Unity中进行物理模拟和碰撞检测时的关键概念Ray、RaycastHit和Raycast,包括它们的定义、作用和在游戏开发中的应用实例,如碰撞检测、物体拾取和鼠标点击事件处理。

206

被折叠的 条评论
为什么被折叠?



