Unity-射线

🏷️ s365app下载 📅 2026-01-17 03:44:55 ✍️ admin 👀 8994 ❤️ 917
Unity-射线

Unity-射线

前言

​ 在游戏开发的过程中,许多功能的实现都需要物理检测,而 发射射线 是Unity中物理检测的通用方法。例如,我们需要检测玩家(Player)脚下是否是 地面(图层为 Ground),只需要从脚底发射一条射线,检测Player脚下GameObject的图层是否为Ground即可。

​ 射线和物理检测何其重要,因此使用单独一篇笔记进行记录,防止自己忘记。

射线

​ 在Unity2D中,发射一条射线需要用到 Physics2D.Raycast 函数,它将返回一个RaycastHit2D 变量,因此射线写法如下:

RaycastHit2D (变量名) = Physics2D.Raycast(起始位置, 方向, 距离, 图层);

if((变量名)) //该变量为bool变量,可用于判断

{.......}

​ 上述代码的意思是,再 指定位置 朝向 指定方向 创建一个 指定长度 的射线,当射线碰撞到 指定图层 时,返回 true。

​ 让我们举一个实际的例子,来看看代码是如何运作的。

...

public float footOffset = 0.0f;

public float wallCheck = 1.0f;

...

RaycastHit2D leftCheck = Physics2D.Raycast(new Vector2(-footOffset,-0.9f), Vector2.left, wallCheck, Ground);

在上述代码中代码,一开始创建了一个 RaycastHit2D 类型的变量,将其命名为 leftCheck。紧接着调用了 **Physics2D.Raycast** 函数,并将各种参数(位置, 方向, 距离, 图层)传入函数中。在上述代码中,他的 起始位置 是一个新建的坐标(-footOffset,-0.9f),方向为向左,长度为一个float变量 wallcheck,检测的图层是 Ground。

​ 这些代码在执行过程中,会从起始位置(-footOffset,-0.9f)向左发射一条长度为wallCheck的射线,当射线碰撞到图层(LayerMask)为Ground 的对象时,就会返回类似于 “我碰撞到Ground图层了!”的信息。一条射线可能会返回多种信息,它会将这些信息打包存入RaycastHit2D的对象实例中并将其返回。这时我们通过访问 RaycastHit2D 对象实例,就可以知道这条射线所获取的所有信息。

​ 当然,Physics2D.Raycast() 还有很多种写法,可以运用于不同的场景,这里时间有限只学了一个。

参考资料

Physics2D-Raycast - Unity 脚本 API (unity3d.com)

RaycastHit2D - Unity 脚本 API (unity3d.com)

🎯 相关推荐

《魔兽世界》全版本pvp外观兑换位置一览
det365手机版

《魔兽世界》全版本pvp外观兑换位置一览

📅 10-26 👀 9445
本月北京再发950万张消费券!明天10点开抢!
跳跳糖是怎么生产的?为什么会在嘴里跳?放进可乐会爆炸吗?