Unity3D研究院之处理角色控制器实现上坡爬坡减速(四十六)

文章介绍如何利用勾股定理在Unity3D游戏中实现角色控制器在上坡时减速,通过计算角色在特定角度坡面上的实际移动距离来调整角色速度,确保游戏体验更加真实。同时,文章还提供了如何处理不同坡度角度及不使用地形元素的情况,并介绍了如何判断角色是否能继续爬坡的方法。

Unity3D研究院之处理角色控制器实现上坡爬坡减速(四十六)

 雨松MOMO  【Unity3D研究院之游戏开发】  围观5096  44条评论  编辑日期:2013-02-19  字体:  

         按照正常情况游戏中角色在上坡爬坡的时候速度应该减慢,可是角色控制器组件没有帮我们做这个判断,刚好最近工作中需要做这个功能,我就用勾股定理的法则来解决这个问题。如下图所示,当角色在爬坡的时候,角色控制器默认行走的距离就是 “C” 。但是如果行走的距离是“C” 你会发现上坡的速度太快了。这里我们需要计算”b”,让角色在上坡时候一次移动的距离是”b”这样移动就很正常了。

         按照勾股定理的法则, c二次方 = a二次方 + b二次方。已知 c  和 a 我们求的b的距离即可。

Unity3D研究院之处理角色控制器实现上坡爬坡减速(四十六) - 雨松MOMO程序研究院 - 1

 

第一步:主角目前所在地形的3D坐标,以及主角面朝方向行走“一段距离”后的3D坐标。 “一段距离” 我这里使用他的行走速度也就是1秒行走的长度。

第二步:把部分代码添加入角色控制器组件。

默认角色控制器行走是走路,简单改一下让他跑步。找到UpdateSmoothedMovementDirection ()方法,加入“|isMoving” 这个判断条件。

 然后找到Update()方法,(C#和js都可以编译通过下面这段代码)

直接运行游戏,你会发现当你在爬坡的时候主角的移动速度会减少,下坡与平地的时候移动速度正常。

另外还有一个地方需要注意下。 使用角色控制器时如果你的坡度角度过于大,你会发现你的主角无法继续爬坡。如下图所示,默认坡度角度为45。如果你需要爬坡更高的角度,直接修改Slope Limit数值即可。

Unity3D研究院之处理角色控制器实现上坡爬坡减速(四十六) - 雨松MOMO程序研究院 - 2

 

当然代码中我们也可以控制角色是否可以继续爬坡,根据上述代码两点Y坐标的插值也可以判断。

接着,如果你的项目中没有使用地形元素,而是用美术建模形成的地形话,那么就需要通过射线来取得“地形”上的两个点。如下图所示。

白色射线:得到主角面朝方向一步以后的地形坐标。

蓝色线段:主角移动的起点和终点的线段。

红色射线:处理摄像机(与本章无关)

 

Unity3D研究院之处理角色控制器实现上坡爬坡减速(四十六) - 雨松MOMO程序研究院 - 3

 

 在地形之上,我们使用下面这个方法得到地形的高度。

如果项目中的地形是美术做的话,需要用射线的方式来计算。代码比较简单我就不用注释了, 就是上图中的那个白色射线,从天上射向地面。参数是模型面前下一步的将要行走的坐标,然后通过射线换算成实际Y轴高度。

 剩下的地方就和上面的代码差不多了。如果你的项目中没有使用角色控制器,用别的方式来实现移动效果,也可以使用这样的方法,总是就是勾股定理了。

最后是本文的内容的下载地址,这样看起来原理就清晰很多。欢迎留言给我,大家互相学习与进步,哇咔咔。

http://vdisk.weibo.com/s/r1xrb

MOMO与MO嫂提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

用 AI 写代码,常见两种翻车: 过重——技能十几门、文档写两遍,二开被流程拖死; 过轻——一句话丢给 Cursor,边界不清、难验收、难回溯。 SW Harness(AI 软件开发工程框架 v1.2) 取中间态:保留「想清楚→设计→实现→验证→可选上云」闭环,体量按个人/小团队砍到能扛住。 不是提示词合集,是可装进 Cursor 的工程工作流。 主路径: /sw req → asd → sdd → dev → review → (env/deploy) → commit 需求写范围与成功标准;架构做边界与选型;模块方案才出接口、时序与逻辑图;开发用例先行;审查一次过质量与基础安全。小改动可走 req→sdd→dev→review。/sw status 看进度,/sw continue 断点续跑。 你会得到: 唯一 Workflow Skill(全套 /sw 门禁)· PRD/ASD/SDD/测试/审查模板 · 完整 DEMO 文档 · 可跑 Java 示例(mvn test)· 云配置与轻量部署脚本 · 二开 context 位。 适合: 真实项目、旧系统二开、接单、个人产品。 不适合: 只要万能提示词、要代开发、要企业多 Agent 重型流水线。 怎么用: Skill 拷到 .cursor/skills/ → 对照 DEMO → 复制空白模板 → 对自己的小需求说 /sw req 开跑。有 VPS 再配云;没有就本地验收即可。 首发 ¥49(标 ¥69),一次买断,支付后自动下 ZIP。 写代码走 /sw;授权 APK 分析可另配 /re——同一套 harness 思路。 轻量可学可二开,不是企业合规流水线。数字商品售出不退,请按需购买。
内容概要:本文围绕“基于蜣螂优化算法的无线传感器网络覆盖优化研究”展开,提出了一种创新且可复现的智能优化方法。通过引入新型群智能优化算法——蜣螂优化算法(DBO),对无线传感器网络(WSN)中的节点部署问题进行建模与求解,旨在最大化网络覆盖率、均衡节点能耗、延长网络生命周期并提升系统整体稳定性。研究基于Matlab平台完成了算法的仿真与实现,构建了合理的适应度函数,设计了关键参数调整策略,并通过大量仿真实验验证了该算法在不同规模监测区域下的优化性能。相较于传统优化算法如粒子群优化(PSO)、遗传算法(GA)等,DBO在收敛速度、全局寻优能力、避免早熟收敛以及覆盖均匀性方面表现出更优异的性能,充分体现了其在复杂工程优化问题中的应用潜力。; 适合人群:具备一定Matlab编程基础和优化算法理论知识,从事智能计算、物联网、无线传感器网络、自动化控制等相关领域的高校研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于无线传感器网络的节点布局优化,有效提升监控区域的感知覆盖质量;②作为新型群智能算法的学习与研究案例,深化对蜣螂优化算法机理的理解,并拓展其在路径规划、资源分配、参数优化等其他工程领域的应用;③为学术论文撰写、科研项目申报、毕业课题设计及算法竞赛提供可靠的技术支持与参考范例。; 阅读建议:建议读者结合提供的Matlab代码深入理解算法的具体实现流程,重点关注适应度函数的构造逻辑、算法参数的敏感性分析及优化迭代过程的可视化展示,并尝试在不同环境设定下复现实验结果,以全面掌握蜣螂优化算法的核心思想及其在WSN覆盖优化中的实际应用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值