0x0.引言
在一些游戏内的星球体积是很小的,但是小小的星球仍然有引力。游戏内的物体是可以贴在其表面上的,如同文学作品《小王子》中所形容的小小星球那样。
图片来源点击此处
对于静态物体(如上图的小树苗小花等)而言,可以将其直接放置在小小星球上的固定位置,但是对于动态可移动的物体呢?如果需要实现动态的物体沿着球面行走呢?注意到上图的星球并非一个规则的球体,其存在凸起等。那么如何在Unity中实现这样的效果?
本文介绍如何使用Unity制作一个球面行走的效果,其最终效果如下图所示:
0x1.思路
要实现这样的效果,其思路并非是使得需要绕面行走的物体单纯去计算其绕某一个点旋转。因为其表面并非一个规则球体。
那么如何着手解决这个问题?
思考一下现实中物体是如何贴在星球表面的呢?其主要原因便是重力。在Unity的物理引擎中对重力是实现了的,并且可以通过Rigidbody组件去修改其是否受重力影响。对于重力的整体设置则可以在ProjectSetting的Physics选项卡中找到。
但是Unity的重力方向默认是朝向世界坐标-y轴方向的,仅仅调节此处的设置是并不能满足需求的。那么从这个地方思考开去,我们就能得到其解决思路:模拟重力。
0x2.编码实现
对于重力模拟,仍然通过Rigidbody组件来实现,首先需要将上面默认的useGravity选项取消防止物体受到默认重力设置的影响。<