1. 程式人生 > >【Unity 3D遊戲開發學習筆記】實現太陽系

【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,