日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Unity实现简单太阳系

發(fā)布時(shí)間:2023/12/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity实现简单太阳系 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

資源準(zhǔn)備

網(wǎng)上的貼圖資源較為散亂,此處提供一個(gè)太陽(yáng)系貼圖的網(wǎng)站,圖片還是相當(dāng)精美的:https://www.solarsystemscope.com/textures/

1、保存相應(yīng)資源并導(dǎo)入成material:


問(wèn)就是英文不好0.0(實(shí)踐下來(lái)沒(méi)有影響就完事了)

2、特別注意導(dǎo)入太陽(yáng)material時(shí),為了更逼真,我為其設(shè)置了自發(fā)光的屬性,實(shí)現(xiàn)自發(fā)光有兩種方法。
第一種:https://blog.csdn.net/qq_44148565/article/details/123117751 但是其中光的顏色還需自己調(diào),我嘗試過(guò)后發(fā)現(xiàn)不太自然,于是沒(méi)有采用。
第二種:只需將太陽(yáng)material的Shader屬性改為L(zhǎng)egacy Shaders/Self-Illumin/Diffuse即可,色調(diào)比較自然。
下圖為前后對(duì)比:


但我還想要實(shí)現(xiàn)明顯照亮其他行星的效果,所以在太陽(yáng)游戲?qū)ο笾性僭黾恿艘粋€(gè)點(diǎn)光源:

效果還是很明顯的:


3、接著就是創(chuàng)建相應(yīng)sphere,調(diào)整好其位置、大小等。初始化位置我統(tǒng)一設(shè)成在一條線上了,以便簡(jiǎn)化位置參數(shù)的調(diào)整。



腳本撰寫(xiě)

對(duì)于行星,要實(shí)現(xiàn)公轉(zhuǎn)、自轉(zhuǎn)以及公轉(zhuǎn)法平面的設(shè)置:

using System.Collections; using System.Collections.Generic; using UnityEngine;public class Rotate : MonoBehaviour {public GameObject target; //天體旋轉(zhuǎn)的中心public float gspeed; //公轉(zhuǎn)速度public float zspeed; //自轉(zhuǎn)速度public float ry,rz; //通過(guò)y軸和z軸調(diào)整法平面 // Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){//旋轉(zhuǎn)軸Vector3 axis = new Vector3(0,ry,rz);//公轉(zhuǎn)this.transform.RotateAround(target.transform.position, axis, gspeed * Time.deltaTime);//自轉(zhuǎn)this.transform.Rotate(Vector3.up * zspeed * Time.deltaTime);} }

對(duì)于太陽(yáng),只需實(shí)現(xiàn)自轉(zhuǎn):

using System.Collections; using System.Collections.Generic; using UnityEngine;public class sun_rotate : MonoBehaviour {public float speed;// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){this.transform.Rotate(Vector3.up * speed * Time.deltaTime);} }

將腳本Rotate掛載在所有行星上,然后進(jìn)行相應(yīng)參數(shù)設(shè)置。以地球?yàn)槔?#xff1a;


注意:月球的target為地球。


背景設(shè)置

背景素材在文章開(kāi)頭那個(gè)網(wǎng)站里也找得到。教程參見(jiàn):https://segmentfault.com/a/1190000008505014

運(yùn)行效果


總結(jié)

以上是生活随笔為你收集整理的Unity实现简单太阳系的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。