物体方位判断以及上坡/下坡道路坡度计算

56 篇文章 79 订阅
订阅专栏
这篇博客探讨了在游戏开发中如何计算主角相对于跑道中心的位置和距离,以及如何判断角色是否在上坡或下坡。通过Vector3.Dot运算确定主角的左右偏移,利用CharacterController的SlopeLimit属性结合碰撞法线角度判断坡度,实现精细的场景交互控制。
摘要由CSDN通过智能技术生成

物体方位计算:

如跑酷游戏,主角在任意方向的曲线跑道上移动,通常会限定主角在水平方向只能在跑道中心左右一定范围内移动,避免主角移出跑道。这时就需要计算主角此时的位置是在跑道中心点的左侧还是右侧,以及距离中心点的距离,如果超过了左右两侧的临界点就不再向对应的方向移动。

离跑道中心的距离就可以这样计算:

float offsetX = Vector3.Dot(pathNormal, transform.position - pathPoint);

其中pathPoint是此时主角距离跑道路径最近的点,pathNormal是该点法线向量,这个法线向量就是指向跑道的右边,如果主角是始终朝向道路前方的,也可以使用主角的transform.right来代替。主角当前的位置减去离路径最近的点就得到了主角相对路径中心的方向,然后用主角的右向量点乘主角相对路径中心的方向就得到了此时玩家距离中心点的左右偏移距离,偏移值小于0表示在中心点左边,大于0表示在中心点右边。

跑道路径以及法线

 上下坡/道路坡度计算:

 CharacterController有个Slope Limit属性,即道路坡度不高于Slope Limit 时 CharacterController都能移动过去。也有很多人遇到斜坡过于陡峭时不让CharacterController继续移动的需求,此时CharacterController自带的功能就无法完成这一需求了。

根据CharacterController与地面碰撞的法线向量和当前路径点的朝向就可以计算出两个向量的夹角角度。

如图当在水平道路上移动时,碰撞法线与道路方向垂直,夹角为90度。

上坡时碰撞法线与道路方向的夹角大于90度。

下坡时碰撞法线与道路方向的夹角小于90度。

所以坡度就可以得出:

float slopeAngle = Vector3.Angle(hit.normal, transform.forward) - 90f;

 

private void OnControllerColliderHit(ControllerColliderHit hit)
    {
        if (hit.collider.CompareTag("Ground"))
        {
            float slopeAngle = Vector3.Angle(hit.normal, transform.forward) - 90f;
            if (slopeAngle > 10)
            {
                Log.Info("上坡中...");
            }else if (slopeAngle < -10)
            {
                Log.Info("下坡中...");
            }
        }
    }

 

道路曲线高程计算公式.doc
10-07
这涉及到坡度的正负(上坡为正,下坡为负),以及变坡点至待求点的桩号(S)和竖曲线的切线长度(T)。 5. **超高缓和过渡段的横坡计算**: 超高缓和过渡段用于调整道路的横坡,确保车辆在转弯时保持稳定。计算过程中,...
Unity检测地面坡度丨人物上坡检测
最新发布
weixin_42746271的博客
12-29 850
此功能为,人物在爬坡等功能时可以检测地面坡度从而完成向某个方向给力或者完成其他操作。
第三十章 Unity角色控制器 Character Controller
konkon2012的博客
05-04 5185
unity角色控制器 Character Controller介绍,Move方法和SimpleMove方法使用
Unity3D FindPonitWay:通过路径点寻路,个人编写的简单易用小插件
Tel17610887670的博客
12-09 1344
最近开发的模拟经营游戏中,有人物寻路的需求。具体如下图所示,人物会沿着固定轨迹走到工作的地点,进行相应的行为逻辑。 由于人物基本按照直线进行行走,使用A*等寻路插件不太符合自己的需求。将大地图简化为路径点之后。画出路线图如下: 由图可分析出,我们只需要做到,不停的找离终点最近的相邻点,就可以实现寻路的目的。 理清思路之后,代码写起来就比较简单了;首先是新建一个路径类,处理该父节点下的所有路径: using System.Collections; using System.Collect..
unity3d 中物体的跟随地形倾斜
chqj_163的专栏
07-13 2368
在游戏中为了实现如下的效果: 一些常见的游戏物体,车辆,坐骑等,放置在地形上和在地形上移动时,需要根据地形的坡度来做倾斜,达到一个比较逼真的效果。下面就说一个简单的实现方案,帮助新手解决这个问题。   首先,需要了解u3d中地形的一些属性:   Terrain 这个类,表示了u3d中的地形,其中我们需要知道的它的属性有:   成员:terrainData -- 包含了各种地形数据   方法:SampleHeight -- 获取指定位置地形的高度   其中terrainData是...
2D动作游戏开发与实现(翻译)
v5browser
07-15 777
原文太长,所以将翻译与原文分成了两部分, 主要是讲2D游戏瓦片规则及不规则渲染与角色碰撞原理的。 因为单纯的2D游戏开发过于简单,所以本文尝试结合不同的2D平面游戏并将之归类,列出他们的优缺点,然后讨论下一些实施的细则。长远目标是在2D平面游戏开发方面的指导做的十分全面。如果有任何建议,更正,要求或者补充,请留言! 声明:有些文章的信息是通过反编译引擎的,并不是通过代码或者编程者本身。...
unity 获取角度值
TheAI的博客
11-20 1万+
获取unity 面板上rotation 值 如何获得用 this.transform.eulerAngles.y  来获取 而要改变其值就要了解他的隐含值:旋转是以一个四元数的形式存储的,可能在inspector上看的是一个三维向量,在实际访问的过程中,transform.rotation是一个Quaternion,这就代表它一共有四个值,xyzw,所以你还需要存储w
Unity中使用Curvy快速生成路径,并使物体沿着路线运动
tt58521的博客
06-23 5890
二、基础使用方法 ①首先需要绘制控制物体移动的路径准备,如下所示: ②开始绘制路径,此时在Scene视图下,按下Ctrl+鼠标点击左键,则就会绘制出一个坐标点,然后选中出现的这个坐标点 进行复制,移动就会绘制车路径,需要绘制多长就复制几个拉开调整即可,如下所示: ③路径绘制好后,可以修改该路径的样式(默认是直线)等参数信息,如下所示: Bezier为贝塞尔曲线,可以试试别的选项,调整路径是直的还是曲线。 ④给需要实现跟随该绘制路径移动的物体添加控制脚本,如下所示: SplineCo
缓和曲线、竖曲线、圆曲线、匝道计算公式
08-05
1. 第一坡度:\(i_1\)(上坡为“+”,下坡为“-”)。 2. 第二坡度:\(i_2\)(上坡为“+”,下坡为“-”)。 3. 变坡点桩号:\(SZ\)。 4. 变坡点高程:\(HZ\)。 5. 竖曲线的切线长度:\(T\)。 6. 待求点桩号:\(S\)...
缓和曲线计算公式.doc
09-26
i2 —— 第二坡度上坡为“+〞,下坡为“-〞) SZ —— 变坡点桩号 HZ —— 变坡点高程 T —— 竖曲线的切线长度 S —— 待求点桩号 五、超高缓和过渡段的横坡计算 超高缓和过渡段的横坡计算用于计算高速公路...
六种坡度计算方法程序
05-21
运用以下六种坡计算方法编写坡度计算程序: 1)简单差分 2)二阶差分 3)三阶反距离平方权差分 4)三阶反距离权差分 5)三阶不带权差分 6)边框差分
利用手机传感器获取坡度和坡向
06-23
- 在户外运动中,运动员可以使用这种技术实时监测上坡下坡的强度,以调整速度和节省体力。 - 地质勘探人员可以快速评估地形特征,无需携带专业设备。 - 在导航应用中,用户可以直观地了解当前行进方向和地形...
高速公路坐标高程计算软件 v3.4.zip
07-11
1、J为起算点里程,Y为起算点的高程,R为圆曲线半径(取绝对值),E、F为第一、第二坡度,不带%号,例如2.5%的坡度就输入2.5,上坡取正值,下坡取负值; 2、K为所求点的里程,T为边桩到设计高程点的斜距,I为横坡...
Unity地形材质贴图随高度变化
Fujige
07-23 2602
地形材质贴图随高度变化1. 导入Amplify Shader Editor插件2. 进行可视化Shader编写3. 给地形赋值材质球进行测试4. 继续编写Shader5. 最终效果PS. 设置材质编辑属性 参考自: https://zhuanlan.zhihu.com/p/72410143. 由于项目情况,一些特效插件不能在LWRP渲染管道下运行,因此导入了Amplify Shader Editor 可视化Shader插件完成 1. 导入Amplify Shader Editor插件 2. 进行可视化Sh
Unity Rigidbody实现爬坡功能
当代野生程序猿
10-24 4788
通过Rigidbody组件实现人物的爬坡功能
Unity3D中上斜坡会下滑的问题
lichoueve的博客
07-26 9510
最近做HTC的项目,发现通过touchpad的触碰来移动物体会导致一个问题,斜坡角度比较大的时候,由于刚体的重力分力会导致运动区域下滑。 其实解决的方法很简单,就是判断刚体本身是否与地面相接触,如果地面地面接触,就将刚体的使用重力取消,如果处于悬空状态,就重新使用重力效果,同时需要限制刚体的速度。 具体代码如下: void OnCollisionStay(Collision other)
Unity3D研究院之处理角色控制器实现上坡爬坡减速(四十六)
linuxheik的专栏
07-26 3643
Unity3D研究院之处理角色控制器实现上坡爬坡减速(四十六)  雨松MOMO 【Unity3D研究院之游戏开发】 围观5096次 44条评论 编辑日期:2013-02-19 字体:大 中 小          按照正常情况游戏中角色在上坡爬坡的时候速度应该减慢,可是角色控制器组件没有帮我们做这个判断,刚好最近工作中需要做这个功能,我就用勾股定理的法则来解决这个
Unity3D技术之利用角色控制器实现爬坡减速效果
Qst_Baron的专栏
02-08 2040
欢迎来到狗刨学习网,这里有很多U3D资源、U3D培训视频、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌           按照正常情况游戏中角色在上坡爬坡的时候速度应该减慢,可是角色控制器组件没有帮我们做这个判断,刚好最近工作中需要做这个功能,我就用勾股定理的法则来 解决这个问题。如下图所示,当角色在爬坡的时候,角色控制器默认行走的距离就是 “C” 。但
Unity】AI实战应用——Unity接入GPT和对游戏开发实际应用的展望
热门推荐
Sun Spark Studio
03-21 1万+
同事朋友们都在恐慌AI的发展,甚至有不少人开始抗拒。我的观点是:人工智能是大势所趋,势不可挡,那就驾驭它吧!我司已经在商业项目中实际使用了AI, 包括Stable Diffusion及其扩展插件,当然也有爆火的ChatGPT。Stable Diffusion + ControlNET + Lora以及等插件的结合使用已经强大到基本取代初中级原画师;
MATLAB方位计算及程序实现
"这篇文档是关于在MATLAB中进行方位计算的一个实例,主要涵盖了算法的设计和实现。用户可以通过选择文件并点击按钮自动计算方位角。文档中包含了四个函数,分别用于弧度改正、角度与弧度转换以及主程序中的数据...
写文章

热门文章

  • 笔记本屏幕变暗/调高亮度闪烁修复方法 21887
  • 【Unity】AI实战应用——Unity接入GPT和对游戏开发实际应用的展望 19223
  • Unity调用Java——直接使用.java文件 16985
  • Unity IL2CPP发布64位,以及代码裁剪Strip Engine Code 15084
  • 【Unity】AssetBundle简单的加密解密 15072

分类专栏

  • Unity 56篇
  • AI应用 3篇
  • Cocos 10篇
  • Unity Shader 3篇
  • Unity游戏框架 22篇
  • Android 3篇
  • 游戏设计研发 1篇
  • 我的作品 3篇
  • 其它 2篇

最新评论

  • 【AR】DroidCam笔记本调用手机摄像头(smartphone‘s camera as pc webcam)

    qq_18986399: 我的USB连接不成功,开启了USB调试,显示 device lost!有同样的吗?

  • 【AR】DroidCam笔记本调用手机摄像头(smartphone‘s camera as pc webcam)

    qq_18986399: 我是pc端显示手机横屏。你修复了吗?

  • 【Unity编辑器扩展】il2cpp代码裁剪(Strip Engine Code)配置工具

    aidfiu01: 这样嘛?我用的2021可以关,新版的没用过就不知道了

  • 【Unity编辑器扩展】il2cpp代码裁剪(Strip Engine Code)配置工具

    SunSparkStudio: 新版unity好像关不了吧

  • 【Unity编辑器扩展】il2cpp代码裁剪(Strip Engine Code)配置工具

    aidfiu01: 嗯嗯,这我知道,所以我觉得对于中大型的热更项目,还不如关闭那个代码裁剪功能,也就多出几m的大小,但后面热更可以更自由

最新文章

  • 【Unity万人同屏插件】使用手册 保姆级教程 GPU动画 Jobs多线程渲染
  • 【Unity编辑器扩展】SpriteAltas资源一键转换为TMP_SpriteAsset或Sprite图集
  • 【Unity】通用GM QA工具 运行时数值修改 命令行 测试工具
2024年8篇
2023年22篇
2022年12篇
2021年6篇
2020年6篇
2019年4篇
2018年5篇
2017年5篇
2016年6篇
2015年9篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家江西商场美陈费用杨浦区知名玻璃钢雕塑推荐圣诞美陈ip商场南山玻璃钢雕塑奉节玻璃钢雕塑鹿城玻璃钢雕塑厂家苏州正方园林玻璃钢雕塑南昌学校玻璃钢雕塑济南武汉市政工程绿化玻璃钢花盆婴儿玻璃钢雕塑宁波佛像玻璃钢雕塑批发玻璃钢雕塑设计哪家好肇庆玻璃钢雕塑销售娄底树脂玻璃钢雕塑摆件丰县定做玻璃钢雕塑厂电话写实玻璃钢雕塑厦门玻璃钢雕塑厂家供应武汉镂空玻璃钢雕塑厂家东莞玻璃钢雕塑定做新开业商场美陈玻璃钢花盆批发价格表开业商场美陈市场报价天水玻璃钢卡通雕塑哪家好邯郸标识玻璃钢彩绘雕塑北京玻璃钢雕塑设计厂家秋季商场美陈销售企业银川户外玻璃钢雕塑定做卡通人像玻璃钢雕塑价格鹿玻璃钢雕塑图片清远玻璃钢购物人物雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化