Unitiを使用した太陽系の作成


unityを使用して簡単な太陽系を作成する

緒論


講義を聞いていると、講師がオフラインなら宿題が出られると言っていましたが、もったいないと思い、この文章を書きました.
授業と同時に.
  • は太陽と地球の目標充填材料であり、
  • である.
  • 地球の自転と公転は
  • を実現した.
  • キーボードおよびマウスを使用してズームカメラ
  • を回転および移動する
    以上の3つの状態を体現している.この記事では、
  • 上記で実装されたスクリプトコードで修正された部分
  • 各惑星の自転軸角度と自転と公転角速度がどのように設定か
  • デモビデオ
  • この3つを順に見てみましょう

    コード修正セクション


    まず、地球に貼られたシナリオは以下の通りです.
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class EarthOrbit : MonoBehaviour
    {
        private float rotateAngle = 0f;
        private float selfRotateAngle = 0f;
        public static float selfRotateSpeed = 1000f; // 지구의 자전 각속도; 임의로 설정
        private float rotateSpeed = selfRotateSpeed / 365.26f; // 지구의 공전 각속도
        private float rotateRadius = 1.0f;
    
        void Start() {
            rotateRadius = transform.localPosition.x;
            Debug.Log(rotateRadius);
        }
    
        // Update is called once per frame
        void Update()
        {
            // get desired position
            float xPos = rotateRadius * Mathf.Cos(rotateAngle);
            float zPos = rotateRadius * Mathf.Sin(rotateAngle);
    
            transform.localPosition = new Vector3(xPos, 0f, zPos);
    
            rotateAngle += rotateSpeed * Time.deltaTime;
    
            selfRotateAngle = selfRotateSpeed * Time.deltaTime;
            //transform.Rotate(Vector3.up, selfRotateAngle)
            //이 메서드는 시계방향으로 회전시키므로 selfRotateAngle을 음수로 설정
            transform.Rotate(Vector3.up, -selfRotateAngle);
        }
    }
    
    カリキュラムでは、地球を実装するだけなので、公転角速度公転半径など、スクリプトですべての変数を初期化しました.
    修正されたコードでは、惑星が実際の位置順にunityで整列しているため、Start()はRotateRadiusを初期化します.
        void Start() {
            rotateRadius = transform.localPosition.x;
            Debug.Log(rotateRadius);
        }
    すべての惑星の初期位置はy軸座標とz軸座標がゼロであるため、x軸の座標は回転半径である.
    カメラのスクリプトは単独で触れていません.クラスでは、スクリプトのすべての機能を使用できます.

    自転軸と角速度の設定


    自転軸はunity内で回転するz座標を変えることで設定されます.


    一方、韓国天文研究院は、地球の自転周期の各惑星の自転公転周期について、地球の自転角速度を静的と宣言した後、この値を基準に各惑星の自転角速度と公転角速度を設定した.
    // in EarthOrbit class
        public static float selfRotateSpeed = 1000f; // 지구의 자전 각속도; 임의로 설정
        private float rotateSpeed = selfRotateSpeed / 365.26f; // 지구의 공전 각속도
    
    // in UranusOrbit class
        void Start() {
            rotateRadius = transform.localPosition.x;
            selfRotateSpeed = EarthOrbit.selfRotateSpeed / 0.7f;
            rotateSpeed = EarthOrbit.selfRotateSpeed / 30707.49f;
        }
    残りの惑星についても、似たようなコードをコピーすることができます.
    Planet抽象クラスが生成された後に継承されたコードが実現すれば,よりオブジェクトに向かうはずである.

    デモビデオ



    上図をクリックしてYouTubeにリンクします.

    reference


    クイックキャンパスゲーム開発者が就職するすべての超格差コースがオンラインです.講義
    material : Solar system textures
    惑星物理量参考資料:韓国天文研究院ウィキペディア