公轉指的是什么?
公轉(英語:Orbital revolution),是指一物體以另一物體為中心,沿一定軌道所作的循環運動;所沿着的軌道可以為圓、橢圓、雙曲線或拋物線。在天文學上,一般用來形容行星、彗星等星體環繞恆星;衛星、人造衛星等環繞行星;小規模星系、星雲、宇宙塵埃等環繞大規模星系;以及更大規模的天體間環繞的運動。
如圖為地球圍繞太陽公轉。
制作模擬(地球圍繞太陽)公轉步驟:
(1)建立地球和太陽模型
首先Create以下游戲對象:兩個Sphere,一個Direction Light;並將其中一個Sphere命名為Earth,另一個Sphere命名為Sun;設置Sun的Scale為(3,3,3),讓太陽這個大球體顯得大一點;而將Earth的Position設置為(5,0,0),讓Earth顯示在太陽的右邊;
(2)為太陽添加材質球
為了讓太陽更像太陽一點,我們在Project中Create一個Material(材質,所謂材質就是修飾游戲對象的),命名為SunMaterial,這里主要是為太陽增加一個顏色。
選中SunMaterial,雙擊Main Color,彈出顏色選擇器,在顏色選擇器中選則一個深黃色的區域。
(3)為地球添加貼圖
為了讓地球更像地球一點,這里我們為地球增加一個背景圖片—地球貼圖。(可以從網上搜索下載)下載完成之后,將地球貼圖拖動到項目中,最后將貼圖拖動到Earth對象上。最后效果如下圖所示。
(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上進行綁定。最后,點擊預覽按鈕,即可看到地球圍繞太陽轉的效果了。
本篇中用到了空間幾何等知識,參考文獻:👉左手坐標系和右手坐標系