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() 还有很多种写法,可以运用于不同的场景,这里时间有限只学了一个。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤