Unity3D 公轉小案例:地球圍繞太陽轉


公轉指的是什么?

公轉(英語: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上進行綁定。最后,點擊預覽按鈕,即可看到地球圍繞太陽轉的效果了。

本篇中用到了空間幾何等知識,參考文獻:👉左手坐標系和右手坐標系


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM