国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity實現(xiàn)簡易太陽系

這篇具有很好參考價值的文章主要介紹了Unity實現(xiàn)簡易太陽系。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

開發(fā)環(huán)境:Unity 2022.3.5f1c1 + Visual Studio 2022
太陽系相關(guān)星體:太陽、八大行星、月球
模擬星系:太陽系、地月系
功能:支持行星以太陽為中心,任意軸進(jìn)行公轉(zhuǎn),此處演示同一平面。
a1-a8為公轉(zhuǎn)軸,可以任意修改,InitStarPosition()將會修正星體初始位置;MoveAroundSun腳本掛在SolarSystemGroup對象上(空對象)。
動態(tài)演示效果

靜態(tài)展示圖片
Unity實現(xiàn)簡易太陽系,Unity,unity,游戲引擎

核心代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-728128.html

using UnityEngine;

public class MoveAroundSun : MonoBehaviour
{
    // 星體
    public Transform Sun;
    public Transform Mercury;
    public Transform Venus;
    public Transform Earth;
    public Transform Moon;
    public Transform Mars;
    public Transform Jupiter;
    public Transform Saturn;
    public Transform Uranus;
    public Transform Neptune;

    // 公轉(zhuǎn)軸:Mercury至Neptune八大行星
    Vector3 a1 = new Vector3(0, 1, 0);
    Vector3 a2 = new Vector3(0, 1, 0);
    Vector3 a3 = new Vector3(0, 1, 0);
    Vector3 a4 = new Vector3(0, 1, 0);
    Vector3 a5 = new Vector3(0, 1, 0);
    Vector3 a6 = new Vector3(0, 1, 0);
    Vector3 a7 = new Vector3(0, 1, 0);
    Vector3 a8 = new Vector3(0, 1, 0);

    /// <summary>
    /// 初始化行星位置,使Star位于以Center為中心,rotateAxis為公轉(zhuǎn)軸的法平面上
    /// </summary>
    /// <param name="center">公轉(zhuǎn)中心</param>
    /// <param name="star">公轉(zhuǎn)行星</param>
    /// <param name="rotateAxis">公轉(zhuǎn)軸</param>
    void InitStarPosition(Vector3 center, Transform star, Vector3 rotateAxis)
    {
        // 中心點指向行星的方向向量
        Vector3 centerToStar = star.position - center;
        // 通過方向向量和公轉(zhuǎn)軸向量的叉乘,得到這兩個向量所在平面的法向量
        Vector3 normal = Vector3.Cross(rotateAxis, centerToStar);
        // 計算方向向量和公轉(zhuǎn)軸向量的角度
        float angle = Vector3.Angle(rotateAxis, centerToStar);
        // 計算方向向量轉(zhuǎn)動到法向量的角度(轉(zhuǎn)動到法平面上的角度)
        float rotateAngle = Mathf.Abs(90 - angle);
        // 以太陽為中心,法向量為轉(zhuǎn)軸來轉(zhuǎn)動角度
        star.RotateAround(center, normal, rotateAngle);
    }

    // Start is called before the first frame update
    void Start()
    {
        // 為了讓任意位置的星體都可以繞任意軸旋轉(zhuǎn),需要在初始時刻定位星體位置(只掛載一個腳本,所以有重復(fù)代碼)
        InitStarPosition(Sun.position, Mercury, a1);
        InitStarPosition(Sun.position, Venus, a2);
        InitStarPosition(Sun.position, Earth, a3);
        InitStarPosition(Sun.position, Mars, a4);
        InitStarPosition(Sun.position, Jupiter, a5);
        InitStarPosition(Sun.position, Saturn, a6);
        InitStarPosition(Sun.position, Uranus, a7);
        InitStarPosition(Sun.position, Neptune, a8);
        InitStarPosition(Earth.position, Moon, Earth.transform.up);
    }
    // Update is called once per frame
    void Update()
    {
        Mercury.RotateAround(Sun.position, a1, 20 * Time.deltaTime);
        Mercury.Rotate(Vector3.up * 50 * Time.deltaTime);

        Venus.RotateAround(Sun.position, a2, 10 * Time.deltaTime);
        Venus.Rotate(Vector3.up * 30 * Time.deltaTime);

        Earth.RotateAround(Sun.position, a3, 10 * Time.deltaTime);
        Earth.Rotate(Vector3.up * 30 * Time.deltaTime);
        Moon.transform.RotateAround(Earth.position, Vector3.up, 359 * Time.deltaTime);

        Mars.RotateAround(Sun.position, a4, 8 * Time.deltaTime);
        Mars.Rotate(Vector3.up * 30 * Time.deltaTime);

        Jupiter.RotateAround(Sun.position, a5, 7 * Time.deltaTime);
        Jupiter.Rotate(Vector3.up * 30 * Time.deltaTime);

        Saturn.RotateAround(Sun.position, a6, 6 * Time.deltaTime);
        Saturn.Rotate(Vector3.up * 30 * Time.deltaTime);

        Uranus.RotateAround(Sun.position, a7, 5 * Time.deltaTime);
        Uranus.Rotate(Vector3.up * 30 * Time.deltaTime);

        Neptune.RotateAround(Sun.position, a8, 4 * Time.deltaTime);
        Neptune.Rotate(Vector3.up * 30 * Time.deltaTime);
    }
}

到了這里,關(guān)于Unity實現(xiàn)簡易太陽系的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • WxGL應(yīng)用實例:繪制高精度的3D太陽系模型

    WxGL應(yīng)用實例:繪制高精度的3D太陽系模型

    天何所沓?十二焉分?日月安屬?列星安陳?—— 屈原 遠(yuǎn)古時期的人類就對神秘幽邃的星空充滿了好奇與敬畏。仰望星空,宇宙浩瀚。比宇宙更壯闊的,是人類對宇宙的不懈追問和沉淀在基因中的探索精神。 本文嘗試用WxGL來回答“日月安屬、列星安陳”這個古老的問題。太

    2023年04月21日
    瀏覽(94)
  • 基于 HTML5 + WebGL 的太陽系 3D 展示系統(tǒng)

    前言 近年來隨著引力波的發(fā)現(xiàn)、黑洞照片的拍攝、火星上存在水的證據(jù)發(fā)現(xiàn)等科學(xué)上的突破,以及文學(xué)影視作品中諸如《三體》、《流浪地球》、《星際穿越》等的傳播普及,宇宙空間中那些原本遙不可及的事物離我們越來越近,人們對未知文明的關(guān)注和對宇宙空間的好奇達(dá)

    2024年02月20日
    瀏覽(24)
  • 【計算機(jī)圖形學(xué)】【實驗報告】太陽系繪制、B樣條曲線繪制(附代碼)

    【計算機(jī)圖形學(xué)】【實驗報告】太陽系繪制、B樣條曲線繪制(附代碼)

    實 驗 報 告 一、實驗?zāi)康?掌握三維圖形的顯示原理和方法,掌握三維觀察的原理和方法; 掌握OpenGL中矩陣堆棧函數(shù)的使用,會使用堆棧函數(shù)進(jìn)行復(fù)雜場景的組裝。 掌握OpenGL中三維觀察變換常用的函數(shù)的使用方法,了解三維模型的貼圖方法; 掌握自由曲線的生成方法,熟練

    2024年02月10日
    瀏覽(31)
  • 【畢業(yè)論文】| 基于Unity3D引擎的冒險游戲的設(shè)計與實現(xiàn)

    【畢業(yè)論文】| 基于Unity3D引擎的冒險游戲的設(shè)計與實現(xiàn)

    ??博客主頁:肩匣與橘 ??歡迎點贊 ?? 收藏 ?留言 ?? 如有錯誤敬請指正! ??本文由 肩匣與橘 編寫,首發(fā)于 CSDN ?? ??生活依舊是美好而又溫柔的,你也是?? 基于Unity3D引擎的冒險游戲的設(shè)計與實現(xiàn) ??前言 摘要 Abstract 1 緒論 1.1 選題背景 1.2 研究目的及意義 2 開發(fā)工具

    2024年02月05日
    瀏覽(34)
  • 十八、Unity游戲引擎入門

    十八、Unity游戲引擎入門

    1、下載 ?? ?首先需要下載Unity Hub,下載網(wǎng)址:https://unity.com/cn。 ?? ?然后在其中下載Unity編輯器并安裝,可選擇最新版本。 ?? ?接著需要選擇適合的開發(fā)環(huán)境,例如Android Studio或Xcode,以便進(jìn)行手機(jī)游戲開發(fā)。在安裝完Unity后,需要根據(jù)項目需求下載對應(yīng)的模塊和插件,例

    2024年02月16日
    瀏覽(117)
  • 使用團(tuán)結(jié)引擎開發(fā)Unity 3D射擊游戲

    使用團(tuán)結(jié)引擎開發(fā)Unity 3D射擊游戲

    ? ? ? ?本案例是初級案例,意在引導(dǎo)想使用unity的初級開發(fā)者能較快的入門,體驗unity開發(fā)的方便性和簡易性能。 ? ? ? 本次我們將使用團(tuán)結(jié)引擎進(jìn)行開發(fā),幫助想體驗團(tuán)結(jié)引擎的入門開發(fā)者進(jìn)行較快的環(huán)境熟悉。 ? ? ?本游戲是一個俯視角度的射擊游戲。主角始終位于屏幕

    2024年01月19日
    瀏覽(110)
  • Unity、UE、Cocos游戲開發(fā)引擎的區(qū)別

    Unity、Unreal Engine(UE)和Cocos引擎是三個常用的游戲開發(fā)引擎,它們在功能和特性上有一些區(qū)別。以下是它們之間的主要區(qū)別: 編程語言:Unity使用C#作為主要的編程語言,開發(fā)者可以使用C#腳本進(jìn)行游戲邏輯編寫。Unreal Engine主要使用C++作為編程語言,但也支持藍(lán)圖系統(tǒng),允許

    2024年02月22日
    瀏覽(99)
  • Unity vs Godot :哪個游戲引擎更適合你?

    Unity vs Godot :哪個游戲引擎更適合你?

    游戲引擎的選擇對開發(fā)過程和最終產(chǎn)品質(zhì)量有著重大影響。近年來,Godot和Unity這兩款引擎受到廣泛關(guān)注。本文將從多個維度對兩者進(jìn)行比較,以期為開發(fā)者提供正確的選擇建議。 Godot和Unity都有各自的優(yōu)勢,沒有絕對的好壞之分。Godot開源免費,上手簡單,更適合2D和小型游戲

    2024年01月23日
    瀏覽(106)
  • 30分鐘了解所有引擎組件,132個Unity 游戲引擎組件速通!【收藏 == 學(xué)會】

    30分鐘了解所有引擎組件,132個Unity 游戲引擎組件速通!【收藏 == 學(xué)會】

    ?? 博客主頁:https://xiaoy.blog.csdn.net ?? 本文由 呆呆敲代碼的小Y 原創(chuàng),首發(fā)于 CSDN ?? ?? 學(xué)習(xí)專欄推薦:Unity系統(tǒng)學(xué)習(xí)專欄 ?? 游戲制作專欄推薦:游戲制作 ??Unity實戰(zhàn)100例專欄推薦:Unity 實戰(zhàn)100例 教程 ?? 歡迎點贊 ?? 收藏 ?留言 ?? 如有錯誤敬請指正! ?? 未來很長

    2024年02月11日
    瀏覽(130)
  • Unity Physics2D 2d物理引擎游戲 筆記

    Unity Physics2D 2d物理引擎游戲 筆記

    2d 材質(zhì) 里面可以設(shè)置 摩擦力 和 彈力 Simulated:是否在當(dāng)前的物理環(huán)境中模擬,取消勾選該框類似于Disable Rigidbody,但使用這個參數(shù)更加高效,因為Disable會銷毀內(nèi)部產(chǎn)生的GameObject,而取消勾選Simulated只是禁用。 Kinematic 動力學(xué)剛體 動力學(xué)剛體不受重力和力的影響,而受用戶的

    2023年04月24日
    瀏覽(93)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包