Unity implementa un sistema solar simple

Preparación de recursos

Los recursos de texturas en Internet están relativamente dispersos. Aquí hay un sitio web con texturas del sistema solar. Las imágenes son bastante hermosas: https://www.solarsystemscope.com/textures/

1. Guarde los recursos correspondientes e impórtelos al material:

Insertar descripción de la imagen aquí
La pregunta es porque mi ingles no es bueno 0.0 (estará bien si no hay impacto en la práctica)

2. Preste especial atención al importar el material solar. Para ser más realista, le configuré el atributo de autoiluminación . Hay dos métodos para lograr la autoiluminación.
El primero: https://blog.csdn.net/qq_44148565/article/details/123117751 Pero el color de la luz debe ajustarlo usted mismo. Después de probarlo, descubrí que no era natural, así que no lo hice. úsalo.
Segundo tipo: simplemente cambie el atributo Shader del material solar a Legacy Shaders/Self-Illumin/Diffuse y el tono será más natural.
La siguiente imagen muestra la comparación del antes y el después:

antes de arreglar
Después de la modificación

Pero también quería lograr el efecto de iluminar claramente los otros planetas, así que agregué otro punto de luz al objeto del juego sol:

Insertar descripción de la imagen aquí

El efecto sigue siendo muy obvio:

Insertar descripción de la imagen aquí
3. El siguiente paso es crear la esfera correspondiente y ajustar su posición, tamaño, etc. Configuré la posición inicial para que esté en una línea para simplificar el ajuste de los parámetros de posición.

Insertar descripción de la imagen aquí

secuencias de comandos

Para los planetas, es necesario realizar el ajuste de revolución, rotación y plano normal de revolución:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Rotate : MonoBehaviour
{
    
    
    public GameObject target;   //天体旋转的中心
    public float gspeed;        //公转速度
    public float zspeed;        //自转速度
    public float ry,rz;         //通过y轴和z轴调整法平面  

    // Start is called before the first frame update
    void Start(){
    
    }
    
    // Update is called once per frame
    void Update()
    {
    
    
    	//旋转轴
        Vector3 axis = new Vector3(0,ry,rz);
        //公转
        this.transform.RotateAround(target.transform.position, axis, gspeed * Time.deltaTime);
        //自转
        this.transform.Rotate(Vector3.up * zspeed * Time.deltaTime);
    }
}

Para el sol, simplemente implemente la rotació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 update
    void Start(){
    
    }
    
    // Update is called once per frame
    void Update()
    {
    
    
        this.transform.Rotate(Vector3.up * speed * Time.deltaTime);
    }
}

Monte el script Rotar en todos los planetas y luego establezca los parámetros correspondientes. Tomemos la tierra como ejemplo:

Insertar descripción de la imagen aquí
Nota: El objetivo de la luna es la tierra.


Configuración de fondo

El material de referencia también se puede encontrar en el sitio web al principio del artículo. Para tutoriales, consulte: https://segmentfault.com/a/1190000008505014

resultado de ejecución

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_56266553/article/details/127464914
Recomendado
Clasificación