Unity笔记---模拟行星旋转(含代码)

一、模拟行星旋转
1.先创建名字为Sphere的3D object。(如图,是一个球状体。)


2.在Asset里面可以创建 material 给我们刚刚创建的小球增加材质(我们现在所学的material主要就用来给物体上色),如图material属性页有很多参数,但上色主要就点击那个像胶头滴管一样的取色器,之后选取自己想给物体赋予的颜色,再把material往物体上拖就好了。(或者选中想要上色的物体,然后把material往物体右下角拖拽就行了。)
material属性页
3.在Asset里创建C#脚本(c# script,建议可以先创建一个文件夹(folder)专门用来放代码脚本,方便整理)。创建好再重命名后大概是这样的在这里插入图片描述
4.最后就附上模拟行星绕太阳旋转的代码了。

//按照比例来只有公转周期大致是一样的,各个行星和太阳的大小比例,距离比例都和实际不一样。
//地球自转速度和月球绕地球旋转速度比例也和实际不同。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EightPlanetrotate : MonoBehaviour
{
    public GameObject Moon;
    public GameObject Sun;
    public GameObject Mercury;
    public GameObject Venus;
    public GameObject Earth;
    public GameObject Mars;
    public GameObject Jupiter;
    public GameObject Saturn;
    public GameObject Uranus;
    public GameObject Neptune;
    public GameObject Pluto;
    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        Moon.transform.RotateAround(Earth.transform.position, Earth.transform.up, 40f * Time.deltaTime);
        Mercury.transform.RotateAround(Sun.transform.position, Sun.transform.up, 132.8f * Time.deltaTime);
        Venus.transform.RotateAround(Sun.transform.position, Sun.transform.up, 49.8f * Time.deltaTime);
        Earth.transform.RotateAround(Sun.transform.position, Sun.transform.up, 33.2f * Time.deltaTime);
        Earth.transform.RotateAround(Earth.transform.position, Earth.transform.up, 20f * Time.deltaTime);
        Mars.transform.RotateAround(Sun.transform.position, Sun.transform.up, 16.6f * Time.deltaTime);
        Jupiter.transform.RotateAround(Sun.transform.position, Sun.transform.up, 2f * Time.deltaTime);
        Saturn.transform.RotateAround(Sun.transform.position, Sun.transform.up, 1f * Time.deltaTime);
        Uranus.transform.RotateAround(Sun.transform.position, Sun.transform.up, 0.3f * Time.deltaTime);
        Neptune.transform.RotateAround(Sun.transform.position, Sun.transform.up, 0.16f * Time.deltaTime);
        Pluto.transform.RotateAround(Sun.transform.position, Sun.transform.up, 0.11f * Time.deltaTime);

    }
}

注意:public class后面跟的是你的文件名,我这里的文件名是EightPlanetrotate。

就简单讲一下代码的作用吧:

前面的public游戏物体就是为了在unity里选中你的目标物体来发挥作用。

而具体发挥作用的是void update中的内容,第一行是月亮(物体Moon)绕地球(物体Earth)旋转的代码。后面都差不多,以此类推。只需要换一下物体就行了,再者就是后面的40f*time.deltatime是控制旋转速度的参数time.deltatime比较常用,一般数值大小在0.02s作用,起到一个控制变量的作用。
第五行有一点小不一样,我在老师教的基础上拓展了一下,就绕着自己转动,也就是为了模拟地球的自转。

这里还要注意一点,就是为了让月球同时绕地球转,同时又要让地球同时绕着太阳转,那月球就会脱离,作为一个单独的物体的话。所以我们需要把月球拖到地球下面,就像这样:在这里插入图片描述
这样才能保证月球一直是绕着地球转的,同时地球也绕着太阳转。不然速度没控制好的话月球会乱飞的,这样我们不论速度多大多小,月球始终绕着地球转,同时地球也绕着太阳转。

5.最后需要做的就是把代码拖到物体下面,就像上色的第二种方法一样。再把各种游戏物体拖入相应位置,就像这样
再点击unity上方正中间的的运行按钮(play),即可看到最后行星绕太阳转动的效果了。(如果效果不明显就通过调节time.deltatime前面的数值来观察。)

感谢观看,因为本来也是正在学习Unity,如有讲错的地方欢迎指正。

  • 9
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值