如何用Unity3D做出昼夜交替的效果

很多小伙伴在做游戏时可能想实现比力传神的实际结果, 好比若何在unity中, 做出日夜瓜代的结果?经由过程本文, 你仅编写简单的剧本就可以实现:进入游戏时, 随机到一个时候(太阳在随机高度), 然后太阳以必然速度活动 。 最后还给太阳加上简单的光晕结果, 使你的项目加倍真实 。

需要这些哦
安装有unity3d肆意版本的电脑一台
unity3d软件(本文利用unity2018)
一、筹办工作1打开unity, 新建一个项目, 取名为demo, 选择项目类型为3D, 然后建立项目 。

如何用Unity3D做出昼夜交替的效果

文章插图

2新项目会自带一个本家儿相机(Main Camera)和一个偏向光(Directional Light) 。 我们删除本家儿相机, 操纵偏向光作为太阳, 然后再新建一个平面(Plane)作为地面 。

如何用Unity3D做出昼夜交替的效果

文章插图

3我们导入(Standard Assets)官方尺度资本包(若是没有这个包的到Asset store自行下载), 在资本包中按照Asset->Standard Assets->Characters->FirstPersonCharater的路径找到第一人称节制器(如图), 并将其拖入场景中作为本家儿角, 便利待会不雅察场景 。

如何用Unity3D做出昼夜交替的效果

文章插图

二、太阳扭转剧本1我们在项目视图窗口新建一个C#剧本, 取名为sunMove, 而且选择偏向光, 把剧本拖到其组件上 。

如何用Unity3D做出昼夜交替的效果

文章插图

2双击打开剧本, 进行剧本的编写, 剧本源码及诠释如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
【如何用Unity3D做出昼夜交替的效果】public class sunMove : MonoBehaviour
{
    public float speed = 0.1f;
    private int degree;
   
    void Start()
    {
        degree = Random.Range(0, 360);
        
        gameObject.transform.Rotate(degree, 0, 0);
    }
    void Update()
    {
        gameObject.transform.Rotate(-speed * Time.deltaTime, 0, 0);
    }
}
申明
1.变量speed是太阳的扭转速度, 变量degree是太阳初始的角度 。
2.在start方式中, 随机生当作一个0-360的角度作为初始角度, gameObject.transform.Rotate(degree, 0, 0);语句是把偏向光(太阳)这个物体的初始角度(X轴)设置当作适才随机生当作的degree 。
3.update方式里, 每一帧按speed的速度改变太阳的角度, 实现太阳扭转的结果 。

如何用Unity3D做出昼夜交替的效果

文章插图

3我们保留剧本, 运行游戏, 就可以看到太阳起头时随机在一个角度, 然后起头扭转 。 若是扭转速度太慢, 我们可以在检视面板及时调整speed的值 。

如何用Unity3D做出昼夜交替的效果

文章插图

推荐阅读