android实现地球围绕太阳转动 地球绕着太阳转的模型_静态方法

Unity 中关于围绕物体公转的案例代码 ,不足或错误请联系博主及时更改,谢谢。


公转指的是什么?

公转(英语:Orbital revolution),是指一物体以另一物体为中心,沿一定轨道所作的循环运动;所沿着的轨道可以为圆、椭圆、双曲线或抛物线。在天文学上,一般用来形容行星、彗星等星体环绕恒星;卫星、人造卫星等环绕行星;小规模星系、星云、宇宙尘埃等环绕大规模星系;以及更大规模的天体间环绕的运动。

如图为地球围绕太阳公转。

android实现地球围绕太阳转动 地球绕着太阳转的模型_android实现地球围绕太阳转动_02

 制作模拟(地球围绕太阳)公转步骤:

(1)建立地球和太阳模型

首先Create以下游戏对象:两个Sphere,一个Direction Light;并将其中一个Sphere命名为Earth,另一个Sphere命名为Sun;设置Sun的Scale为(3,3,3),让太阳这个大球体显得大一点;而将Earth的Position设置为(5,0,0),让Earth显示在太阳的右边;

android实现地球围绕太阳转动 地球绕着太阳转的模型_贴图_03

(2)为太阳添加材质球

为了让太阳更像太阳一点,我们在Project中Create一个Material(材质,所谓材质就是修饰游戏对象的),命名为SunMaterial,这里主要是为太阳增加一个颜色。

android实现地球围绕太阳转动 地球绕着太阳转的模型_静态方法_04

选中SunMaterial,双击Main Color,弹出颜色选择器,在颜色选择器中选则一个深黄色的区域。

android实现地球围绕太阳转动 地球绕着太阳转的模型_贴图_05

(3)为地球添加贴图

为了让地球更像地球一点,这里我们为地球增加一个背景图片—地球贴图。(可以从网上搜索下载)下载完成之后,将地球贴图拖动到项目中,最后将贴图拖动到Earth对象上。最后效果如下图所示。

android实现地球围绕太阳转动 地球绕着太阳转的模型_静态方法_06

(4)建立运行脚本代码

新增一个C# Script,命名为EarthControl。双击该脚本文件,在编辑器中写入以下代码。

这里要注意,常用的游戏对象一般设置为全局变量,并且在Start方法中进行初始化(这里是通过GameObject的Find静态方法获取,你可以理解为JavaScript的Dom操作GetElementById("Earth"))。游戏对象的transform组件用于控制物体的位置,旋转和缩放。

1 using UnityEngine;
 2 using System.Collections;
 3 
 4 public class EarthControl : MonoBehaviour
 5 {
 6     // 定义游戏对象
 7     public GameObject earth;
 8     public GameObject sun;
 9 
10     // Use this for initialization
11     void Start()
12     {
13         // 启动时获取游戏对象
14         earth = GameObject.Find("Earth");
15         sun = GameObject.Find("Sun");
16     }
17 
18     // Update is called once per frame
19     void Update()
20     {
21         // 使地球对象围绕着太阳旋转
22         earth.transform.RotateAround(sun.transform.position, Vector3.up, 0.3f);
23     }
24 }

使用RotateAround()方法,让地球始终围绕着太阳在Y轴方向旋转。参数1表示围绕旋转参照点的位置(太阳的位置),参数2表示围绕旋转的角度,Vector3.up就是表示Y轴旋转,参数3表示一次旋转的速度(long类型,越大则越快)。

(5)绑定脚本并运行

脚本写好之后,将该脚本拖动到Earth上进行绑定。最后,点击预览按钮,即可看到地球围绕太阳转的效果了。

android实现地球围绕太阳转动 地球绕着太阳转的模型_静态方法_07

本篇中用到了空间几何等知识,参考文献:👉左手坐标系和右手坐标系