【Unity 3D遊戲開發學習筆記】實現太陽系
目標:
寫一個程式,實現一個完整的太陽系, 其他星球圍繞太陽的轉速必須不一樣,且不在一個法平面上。
基本思路是在裡面建立物件,架構成一個太陽系,sun作為父物件,其他行星作為子物件,並且相對sun的初始位置均不一樣,那麼角速度相同的情況下轉速就不一樣了,另外法平面是採取隨機分配一個方向給任意一個行星,只要y和z的比值不一樣,那麼就不會在同一個軌道上。
實現過程:
如圖建立物件,並放到合適位置,改好名字
把指令碼掛到Sun上,並給Script中的Transform物件賦值(把對應物件拉進去就行)
另外新建Material掛在星球上可以讓星球看上去更好看,以下是地球的,圖片網上搜的:
效果圖:
我給太陽加了光源,讓他能有照明的效果(在我的另一篇部落格有對光源更多的介紹)
實現程式碼:
sunset.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class sunset : MonoBehaviour {
public Transform sun;
public Transform mercury;
public Transform venus;
public Transform earth;
public Transform mars;
public Transform jupiter;
public Transform saturn;
public Transform uranus;
public Transform neptune;
public Transform moon;
// Use this for initialization
Vector3 []a = new Vector3[9];
float speed = 40;
float y, z;
void Start () {
int i = 0 ;
for (i = 0; i < 9; i++) {
y = Random.Range(1, 360); // 隨機設定角度
z = Random.Range(1, 360); // 隨機設定角度
a[i] = new Vector3(0, y, z); // 以上是為了製造不同的運動法平面,修改y和z可以使得繞不同的軸轉
}
}
// Update is called once per frame
void Update () { // 每個星球的旋轉動作,用到了初始化的a[i]
mercury.RotateAround(sun.position, a[0], speed*Time.deltaTime);
mercury.Rotate(Vector3.up *speed *Time.deltaTime);
venus.RotateAround(sun.position, a[1], speed*Time.deltaTime);
venus.Rotate(Vector3.up *speed *Time.deltaTime);
earth.RotateAround(sun.position, a[2], speed*Time.deltaTime);
earth.Rotate(Vector3.up *speed *Time.deltaTime);
mars.RotateAround(sun.position, a[3], speed*Time.deltaTime);
mars.Rotate(Vector3.up *speed *Time.deltaTime);
jupiter.RotateAround(sun.position, a[4], speed*Time.deltaTime);
jupiter.Rotate(Vector3.up *speed *Time.deltaTime);
saturn.RotateAround(sun.position, a[5], speed*Time.deltaTime);
saturn.Rotate(Vector3.up *speed *Time.deltaTime);
uranus.RotateAround(sun.position, a[6], speed*Time.deltaTime);
uranus.Rotate(Vector3.up *speed *Time.deltaTime);
neptune.RotateAround(sun.position, a[7], speed*Time.deltaTime);
neptune.Rotate(Vector3.up *speed *Time.deltaTime);
moon.RotateAround(earth.position, Vector3.right, 400 *Time.deltaTime);
}
}
相關推薦
【Unity 3D遊戲開發學習筆記】實現太陽系
目標: 寫一個程式,實現一個完整的太陽系, 其他星球圍繞太陽的轉速必須不一樣,且不在一個法平面上。 基本思路是在裡面建立物件,架構成一個太陽系,sun作為父物件,其他行星作為子物件,並且相對sun的初始位置均不一樣,那麼角速度相同的情況下轉速就不一樣了,另外
【Unity 3D遊戲開發學習筆記】粒子光環
實現如下圖的粒子光環: 參考網站:http://i-remember.fr/en 思路: 首先宣告定義一個類用於儲存每個粒子的半徑和角度 public class particleClass { public float radius =
Unity 3D遊戲開發學習筆記(2) 牧師與魔鬼
遊戲事物: 3牧師,3惡魔,2河岸,河,船。 遊戲故事:3牧師和3惡魔需要用一艘船全部到達彼岸,但是船上和岸上都不能出現惡魔比牧師多的情形,否則惡魔會把牧師K.O,玩家輸掉比賽;直到所有牧師惡魔都到達對岸,玩家取得勝利。 MVC架構: IUser
【Unity 3D 遊戲開發】Unity3D 入門
一. 工作區域詳解1. Scence檢視 (場景設計面板)scence檢視簡介 : 展示建立的遊戲物件, 可以對所有的遊戲物件進行 移動, 操作 和 放置;-- 示例 : 建立一個球體, 控制攝像機,
【Unity3D遊戲開發學習筆記】(四)一切都動起來—Animator元件的應用
一、Animation簡介 動畫原本是指由許多連續的圖片在人眼前面快速播放,肉眼因視覺殘像產生錯覺,而誤以為畫面活動的作品。 但在 Unity3D 中的“ Animation”【動畫】 系統應該這樣理解——用於為遊戲者自動播放人物動作或自動演示物體運動路徑、色
【Unity3D遊戲開發學習筆記】(六)上帝之手—GameObject的操作
在Unity中,所有實體都屬於遊戲物件(GameObject),比如外部匯入到場景中的模型,Unity自帶的立方體等等,而要將這些GameOject進行管理,互動等操作,則需要用到指令碼來實現,上一節我們已經學習瞭如何建立一個指令碼並繫結到一個物體上,現在我們將
【Unity3D遊戲開發學習筆記】(七)上帝之眼—第三人稱攝像機的簡單實現(跟隨視角,自由視角)
陸陸續續又開始更新自己的部落格,看來自我驅動能力還是不夠啊= =,廢話不多說了,之前的內容大概說了一下Unity的一些基礎知識,接下來我們將要對一些基本功能做一些學習。大家都知道,一個遊戲,少不了攝像機的參與(這不是廢話麼!沒攝像機怎麼玩!畫面都不呈現了好伐!)
2.GUI控件的使用 --《UNITY 3D 遊戲開發》筆記
div info art color text tar scrip 寬高 執行 1.Label 控件 編寫腳本文件,直接綁定在main camera上 public class labelScript : MonoBehaviour { //設定一個值來接收外部
【微信小程式學習筆記】1:開發一個帶歷史記錄功能的四則計算器
端午CSDN學院促銷,買了微信小程式開發實戰跟著學習一下。 混合模式移動應用 微信小程式是一種Hybrid-App(混合模式移動應用),它是介於Native-App和Web-App之間的,更接近前者,但開發成本小很多。 基本結構 pages目錄:其內的
遊戲開發學習筆記三
nor scrip 筆記 nsrunloop posit ppr 遊戲開發 tor http sdk%E6%9B%B4%E6%96%B0%E4%B8%8D%E6%88%90%E5%8A%9F%E6%B1%82%E5%A4%A7%E7%A5%9E%E5%B8%AE%E5%BF
【吳恩達機器學習筆記】Week4 ex3答案
與上一週作業相同,按著公式程式設計就好了 function [J, grad] = lrCostFunction(theta, X, y, lambda) %LRCOSTFUNCTION Compute cost and gradient for logisti
【裴星宙的學習筆記】一些學習筆記, 一點備忘錄.
專欄達人 授予成功建立個人部落格專欄
【Convex Optimization (by Boyd) 學習筆記】Chapter 2 - Convex sets(1) 仿射集&凸集
I. 仿射凸集(Affine and convex sets) 1. 線與線段 假設\(R^n\)空間內兩點\(x_1,x_2\, (x_1≠x_2)\),那麼\(y=\theta x_1+(1-\theta)x_2, \theta∈R\)表示從x1到x2的線。而當\(0≤\theta≤1\)時,表示x1
【吳恩達機器學習筆記】week3:1/2邏輯迴歸
第三週 六、邏輯迴歸(Logistic Regression) 這裡首先區分一下線性迴歸和邏輯迴歸,線性迴歸就是擬合,邏輯迴歸是分類。 6.2 假說表式(Hypothesis Representation) 下面一個部分主要講的是假設函式h(x)在分類問題中輸出只能是0/
遊戲開發學習筆記(七)開發揹包系統
思路: Bag:管理揹包裡的格子 BagItemGrid:管理格子儲存物品的資訊(id及num) BagItem:管理物品拖拽功能及物品物品的更新顯示 Bag:管理揹包裡的格子 建立UI,Bag_item 和Bag_item_grid的Prefab, Bag新增Bag指令碼
【吳恩達機器學習筆記】第三章:線性迴歸回顧
本章是對線性代數的一些簡單回顧,由於之前學過,所以這裡只是簡單的將課程中的一些例子粘過來 矩陣表示 矩陣加法和標量乘法 矩陣向量乘法 用矩陣向量乘法來同時計算多個預測值 矩陣乘法 用矩陣乘法同時計算多個迴歸
【吳恩達機器學習筆記】第五章:多變數線性迴歸
目錄 多特徵下的目標函式 多元梯度下降法 多元梯度下降法中的方法 特徵縮放 選擇學習率 特徵和多項式迴歸 正規方程(區別於迭代法的直接解法) 正規方程在矩陣不可逆的情況下的解決方法
opengl es3.0遊戲開發學習筆記1-繪製旋轉的三角形
前段時間一直在看opengl es2.0遊戲開發的知識 ,這幾天買了本opengl es3.0遊戲開發的書 打算一邊學習一邊整理學習筆記,我的開發環境是Android studio 2.1.3,不過有個問題是Android studio自帶的模擬器只能支援es2
Photon + Unity3D 線上遊戲開發 學習筆記(一)
大家好, 我也是學習Photon + unity3D 的新手 有什麼說錯的地方大家見諒哈, 我的開發環境是 unity3D 4.1.3 , Visual Studio 是2010 版本的 photon 用的是 V3 語言C# photon
【COCOS2DX-BOX2D遊戲開發之三】 讀取tiledmap的tmx阻擋
做一款畫素遊戲專案,需要讀取TMX檔案中的阻擋區域,生成box2d的fixture,來做阻擋 使用cocos2dx版本: 2.2.2 1.在tmx檔案中建立一個"Physics"的層,用來存放編輯器中生成的各種阻擋塊 編輯器中主要有polygone, polyline,