Unity3D环境中的昼夜交替,并且控制好光线随着时间的变化而变化,太阳位置跟随经纬度的不同而不同。

重点:

  1. 时间范围为0~24小时;
  2. 太阳位置跟随当前经纬度;
  3. 太阳完成东升西落,世界坐标系中的x正为东方,x负为西方,z正为北;
  4. 太阳光线强度变化范围0~1,按照24小时的正弦变化。

白天效果如下 :

当前的系统时间:

夜晚效果如下:

当前的系统时间:

以下是部分代码:

using System.Collections;
using System.Collections.Generic;
using System;
using UnityEngine;
using UnityEngine.AzureSky;
using UTools.UCoordinate;[RequireComponent(typeof(AzureController))]
public class AzureController : MonoBehaviour
{[Tooltip("AzureSky控制器")]public AzureSkyController azureSkyController;[Tooltip("当前地理位置的经纬度")]public CoordinateConvert curGeographicCoordinate;[Tooltip("本地地理位置的经纬度")]LngLatVector localGeographicPos;[Tooltip("光照对象")]public Light lightObj = null;[Tooltip("光照强度")][Range(0, 1f)]float lightIntensity = 0.8f;float LightIntensity{get { return lightIntensity; }set {if (lightObj != null){lightIntensity = value;lightObj.intensity = value;}}}[Tooltip("光照变化比例")]float intensityRate = 0f;public LngLatVector LocalGeographicPos{get { return localGeographicPos; }set {if (azureSkyController != null){localGeographicPos = value;azureSkyController.timeOfDay.latitude = (float)value.latitude;azureSkyController.timeOfDay.longitude = (float)value.longitude;}            }}private void Awake(){if (azureSkyController == null){azureSkyController = GetComponent<AzureSkyController>();}// 计算光照比例(按照24小时的正弦比例计算)intensityRate = 1f / 24;}// Start is called before the first frame updatevoid Start(){if (azureSkyController){// 本地系统时间azureSkyController.timeOfDay.year = DateTime.Now.Year;azureSkyController.timeOfDay.month = DateTime.Now.Month;azureSkyController.timeOfDay.day = DateTime.Now.Day;// 经纬度if (curGeographicCoordinate){LocalGeographicPos = curGeographicCoordinate.centerLngLat;}// 光照强度if (lightObj != null){float vale = Mathf.Sin(6 * intensityRate * 3.1415926f);LightIntensity = Mathf.Sin(DateTime.Now.Hour * intensityRate * 3.1415926f);}}}// Update is called once per framevoid Update(){}private void FixedUpdate(){if (azureSkyController){// 本地经纬度坐标if (!LngLatVector.Appropriately(localGeographicPos, curGeographicCoordinate.centerLngLat)){LocalGeographicPos = curGeographicCoordinate.centerLngLat;}// 本地系统时间if (azureSkyController.timeOfDay.hour != DateTime.Now.Hour){// 时间太阳位置azureSkyController.timeOfDay.hour = DateTime.Now.Hour;// 光照变化LightIntensity = Mathf.Sin(DateTime.Now.Hour * intensityRate * 3.1415926f);                }}}
}

特别说明:

该功能借助了Azure[Sky] Dynamic Skybox包,导入工程之后使用以上脚本可完成各位童鞋们想要的效果,当然啦,有需要交流的可随时留言!祝各位工作愉快^o^!

Unity3D完成随时间变化的昼夜交替及光线变化相关推荐

  1. C++:应用有限差分法求解随时间变化 平流方程 ut = - c * ux 在一个空间维度上,与 恒定速度,使用FTCS方法,正向时间差, 居中空间差(附完整源码)

    C++:应用有限差分法求解随时间变化 平流方程 ut = - c * ux 在一个空间维度上,与 恒定速度,使用FTCS方法,正向时间差, 居中空间差 # include <cmath> ...

  2. C++:有限差分法求解随时间变化 平流方程 ut = - c * ux 在一个空间维度上,与 恒定速度,使用Lax-Wendroff方法作为时间导数(附完整源码)

    C++:有限差分法求解随时间变化 平流方程 ut = - c * ux 在一个空间维度上,与 恒定速度,使用Lax-Wendroff方法作为时间导数 # include <cstdlib> ...

  3. C++:有限差分法求解随时间变化 平流方程 ut = - c * ux 在一个空间维度上,与 恒定速度,使用Lax方法作为时间导数(附完整源码)

    C++:有限差分法求解随时间变化 平流方程 ut = - c * ux 在一个空间维度上,与 恒定速度,使用Lax方法作为时间导数 # include <cstdlib> # includ ...

  4. 时间锁,手把手教你如何用Java设置随时间变化的动态密码

    时间锁:顾名思义就是用密码随时间变化而变化. 具体实现步骤如下: 步骤一:我们需要明确我们需要一个什么样的类,我想的是需要一个数据类,如下 步骤二:其次我们需要明确这个类里面需要实现那些功能?以简单的 ...

  5. Fluent关于UDF实现速度入口随时间变化

    Fluent关于UDF实现速度入口随时间变化](这里写自定义目录标题) fluent编译过程 小编也是第一次实现UDF在fluent中实现控制速度入口条件随时间变化,主要的学习过程还是网上的一些资料, ...

  6. R语言 (温度 随时间变化)

    数据是某一天24小时的室外温度变化.我们来尝试对数据进行可视化操作. 代码如下: temp<-c(7,7,7,7,7,8,8,9,9,10,12,16,17,16,14,12,11,10,10, ...

  7. 足球大数据预测中欧亚大小球随时间变化的处理

    上期介绍了足球大数据软件开发.网站建设--数据更新速度策略_sundayhost的专栏-CSDN博客,这期接着讲足球大数据预测有关时间函数的操作处理.这也是许多用户在分析足球结果时参考很多的一条要素. ...

  8. 怎么用Python写出随时间变化的字_Python爬虫实战,AcFun弹幕视频网 - 长情且温柔

    ​ CSDN个人主页: 高智商白痴原文地址: 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更 ...

  9. 怎么用Python写出随时间变化的字_如果只推荐一本 Python 进阶书籍,我要 Pick 它!...

    本文作者:豌豆花下猫,来源:Python猫 今年二月初,我偶然看到了一条推特: <流畅的Python>一书的作者发布了一条激动人心的消息:他正在写作第二版! 如果要票选最佳的 Python ...

最新文章

  1. 【Kali渗透全方位实战】Aircrack-ng拿隔壁女神家的wifi密码
  2. 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
  3. 让NVIDIA Jetson AGX Xavier火力全开的秘密
  4. 反思学习方法:后推前 前推后
  5. linux下本地的源的格式,[Linux]CentOS7搭建/配置:YUM仓库/源[本地源/HTTP源/自建源仓库...
  6. android评论功能带emoji,分享一个自己写的emoji-comments评论组件
  7. 半边数据结构(The_Half-Edge_Data_Structure)
  8. spring mvc 从Controller向页面传数据
  9. Web自动化框架LazyUI使用手册(4)--控件抓取工具Elements Extractor详解(批量抓取)
  10. 考研英语前缀总结·十五
  11. 思维破局:真正废掉一个人的,从来都不是一份稳定的工作
  12. 运营Tumblr的几个建议-教你成为tumblr达人
  13. 苹果8硬件保修服务器,iPhone手机刷机报错,很多是硬件问题
  14. 软件测试教程第2版(宫云战主编)
  15. 视频教程-SpringBoot核心技术-Java
  16. 占书明:win7系统微信突然提示“微信运行错误:当前版本需在windows xp sp3以上系统运行,请安装可用版本或升级系统。点击确认下载安装可用版本”。
  17. 成人学位英语词汇易混淆的125个词
  18. 用了MybatisPlus后,我很久没有手写sql了
  19. 两年后,我仍然想念耳机端口
  20. logstash集成elasticsearch报错: Attempted to resurrect connection to dead ES instance

热门文章

  1. Photoshop插件-全部色彩校正-脚本开发-PS插件
  2. 步步惊“芯”——软核处理器内部设计分析
  3. 【ARM Cortex-M 系列 1 -- Cortex-M0, M3, M4, M7, M33 差异】
  4. 浅谈旅行商问题(TSP问题)
  5. 语义相似度模型SBERT ——一个挛生网络的优美范例
  6. 2021-08-18王道 数据结构 p90 第4题
  7. 基于深度模型Out of Distribution(OOD)基础技术路线研究
  8. 【Linux】CentOS安装Chrome浏览器
  9. 过年了,提前祝福园子里兄弟新年快乐
  10. minecraft1.16.5 Java版本添加mod以及局域网联机总结