URL
status
type
date
slug
summary
tag
category
password
icon
一直以来想做一个mini版的,侧重利用关卡叙事的无人深空,前天做好了opening的ui(比计划的晚了一个星期😅),计划先打造基础场景。在太空场景中星球是必不可少的,一开始打算先把美工放一放,先从模拟星体的物理特性开始,于是就有了这篇文章。
先以母星地球为例子,需要研究的基本特性有公转,自转,地心引力。
公转
星球的公转的轨道可谓是多种多样,但大多是呈椭圆型的。
椭圆/正圆轨道
之所以把椭圆与正圆合在一起,是因为当椭圆的长短轴等长时,就成了正圆,既然是这样,以圆轨道进行公转的星球就都能够使用这个脚本了。
自转
自转是绕着某根轴旋转,这个轴可能不和轨道面垂直,但实现起来还是比公转简单许多。
这样,每帧星球都会绕其自身的y轴进行自转,从而实现了星球的自转效果。根据需要调整
rotationSpeed
来控制自转速度,并确保将脚本附加到需要自转的星球物体上。地心引力
既然要模拟地心引力,就得禁用Rigidbody组件中的Use Gravity,因为在ProjectSetting的Physics选项卡中,物理引擎提供的重力方向是唯一的,不能很好地满足需求(应该有通过代码改变Gravity方向的方式,但这里不做讨论)
星球作为引力的发出者挂载GravityAttractor。
玩家角色作为引力的接收者挂载GravityBody,在Inspector中添加所受引力的发出者GravityAttractor。(注意:玩家角色必须有碰撞体组件,否则会有bug出现)
效果展示(感觉上只是基本实现,效果比较差,也可能是第三人称角色控制器的相机不适合这种移动方式)
总结
要完全实现真实的天体物理,所涉及到的技术还是比较多的。本文只部分涵盖了其中最简单最基础的逻辑实现,还有许多的细节需要去完善,许多现实与理想情况之间的偏差需要去讨论。
- 作者:Cloud
- 链接:https://cloud09.xyz/article/17aaf03c-df57-4949-83a3-718837477807
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。