【2d游戏开发】实现昼夜系统
前言
本次文章将编写unity如何根据时间实现昼夜系统,也因此,本文章需要依托于前面文章的时间系统功能。
同样,这里只把重要的部分编写出来,具体的实现过程请到b站搜索本人的2d游戏开发-unity实现
系列视频教程。
功能说明
本次的昼夜系统依托于时间系统,前面我已经将24分钟设置为游戏的一天,那么这次就根据不同的时间显示不同的亮度.
本次的不同时间亮度设置如下:
21:00-05:00 保持最暗 06:01-12:00 逐渐变亮 12:01-15:00 保持最亮 15:01-20:59 降低亮度
实现原理
本次昼夜系统实现的原理如下:
在unity中,调节光线的RGB会导致光线的明暗程度不同,于是,本次文章依据于此进行制造。
实现过程
材质
要实现这个效果,需要给受光线影响的物体添加一个材质
光源
新建一个光源,我这里创建的是直射光源,然后给这个光源添加我下面的代码组件
代码
具体的实现代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class lightControll : MonoBehaviour
{// Start is called before the first frame update// 时间系统public GameObject timeSystem;// 获取光源private Light Light;void Start(){Light = GetComponent<Light>();}// Update is called once per framevoid Update(){CircadianSystem();}// 昼夜系统void CircadianSystem() {/**21:00-05:00 保持最暗 RGB(0,0,0)06:01-12:00 逐渐变亮 RGB(1~254,1~254,1~254)12:01-15:00 保持最亮 RGB(255,255,255)15:01-20:59 降低亮度 RGB(254~1,254~1,254~1)// 根据时间长度决定白天变亮和晚上变暗的速度06:01-12:00 6小时 360秒 254/360 = 0.70515:01-20:59 6小时 360秒 254/360 = 0.705*/// 实例化时间系统脚本TimeSystemContoller timeSystemContoller = timeSystem.GetComponent<TimeSystemContoller>();//int minutes = timeSystemContoller.showMinute;int seconds = timeSystemContoller.showSeconds;// 21:00 - 05:00if (minutes >=21 && minutes <=23) {Light.color = new Color(0/255f,0/255f,0/255f);}if (minutes>=0 && minutes <=4) {Light.color = new Color(0 / 255f, 0 / 255f, 0 / 255f);}// 06:01-12:00if (minutes>=5 && minutes <=11) {//当前经过了多长,在这个时间段int totalSeconds = (minutes - 5) * 60 + seconds;// 经过多少RGBfloat groundRGB = totalSeconds * (float)0.705;// 当前的RGB是多少float currentRGB = 1 + groundRGB;Light.color = new Color(currentRGB/255f, currentRGB / 255f, currentRGB / 255f);}// 12:01-15:00if (minutes>=12 && minutes <=14) {Light.color = new Color(255/255f,255/255f,255/255f);}// 15:01-20:59if (minutes>=15 && minutes<=20) {// 当前经过多长时间int totalSconds = (minutes - 15) * 60 + seconds;// 经过多少RGBfloat groundRGB = totalSconds * (float)0.705;// 当前RGBfloat currentRGB = 254 - groundRGB;// Light.color = new Color(currentRGB / 255f, currentRGB / 255f, currentRGB / 255f);}}
}
效果截图
结语
以上为我实现昼夜系统的过程,如需要更详细的教学,请到b站搜索本人的2d游戏开发-unity实现
系列教学视频。
【2d游戏开发】实现昼夜系统相关推荐
- Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏
Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏 即使是现在,很多初学游戏开发的同学,在谈到Unity的时候,依然会认为Unity只能用于制作3D游戏的.实际上,Unity在2013年发布 ...
- Unity 2D游戏开发快速入门(内部资料)
Unity 2D游戏开发快速入门(内部资料) 试读样张:http://pan.baidu.com/s/1hqh5oqw Unity 2D游戏开发快速入门4 前 言 Unity是一款综合的游戏开发工具 ...
- 【Unity】Unity 2D游戏开发(一)U2D基础功能
文章目录 Unity 2D游戏开发基础知识 Animation动画 SortingLayer层排序 Physics 2D物理2D Rigidbody 2D刚体 示例 1.点击鼠标发出子弹 2.子弹打中 ...
- 游戏开发 unity3d python_游戏研发系列 Unity3D/2D游戏开发从0到1 第2版.pdf
作 者 :刘国柱著 出版发行 : 北京:电子工业出版社 , 2018.01 ISBN号 :978-7-121-33499-3 页 数 : 507 丛书名 : 游戏研发系列 原书定价 : 99.00 开 ...
- 2D游戏开发 - 配置SkyGameEngine2d环境
2D游戏开发 - 配置SkyGameEngine2d环境 一.本项目需要准备的环境 二.下载引擎源码 三.打开工程 四.编译项目 五.运行示例游戏 SkyGameEngine2d - 探索 简洁 易用 ...
- 【2d游戏开发】unity实现UI框架搭建
前言 前面一直比较忙,然后到现在才继续接游戏的文章,那么本次将带大家去搭建一个ui框架,同样,需要更具体的教学,可以到b站搜索本人的关于2d游戏开发-unity实现xxx的系列视频. 步骤 其实大致的 ...
- 2D游戏开发 - SkyGameEngine2d 引擎架构 | 目录结构 | 引擎入口点
2D游戏开发 - SkyGameEngine2d 引擎架构 | 目录结构 | 引擎入口点 一.引擎架构 二.引擎目录 2.1 src目录介绍 三.项目目录 四.引擎框架入口点分析 4.1 main.c ...
- Unity 2D游戏开发视频教程 Unity 2D Game Developer Course Farming RPG
Unity 2D游戏开发视频教程 Unity 2D Game Developer Course Farming RPG Unity 2D游戏开发课程农业RPG MP4 |视频:h264,1280×72 ...
- Unity 2D游戏开发教程之摄像头追踪功能
Unity 2D游戏开发教程之摄像头追踪功能 上一章,我们创建了一个简单的2D游戏.此游戏中的精灵有3个状态:idle.left和right.这看起来确实很酷!但是仅有的3个状态却限制了精灵的能力,以 ...
最新文章
- mvc中ajax的跳转,springmvc ajax 跳转的学习笔记
- bootstrap 固定最底部_bootstrap 固定底部导航自适应
- 实现一个登录:Mac+.NET 5+Identity+JWT+VS Code
- 填充table_Excel Power Query | 向下填充的逆过程
- Hadoop on Mac with IntelliJ IDEA - 5 解决java heap space问题
- Visual Studio Code打开项目
- 人工智能大火能否烧开智能家居这锅水?
- Android开发笔记(一百五十一)WebView与JavaScript交互的四种形式
- 2017-2018网络攻防第四周作业
- [Bootstrap-Table] 中的事件用例
- CenterLoss
- HTML中更改hr宽度高度颜色
- Android Studio 简单的登陆界面实现(含源码)
- 怎么用python画天气图_Python气象绘图教程(十五)—Cartopy_5
- Sql server中 如何用sql语句创建视图
- 第六章 Dubbo的源码解析
- R语言:时间序列ARIMA模型使用
- 电机精密运动控制专家电机驱动芯片TMC260
- Jackson 生成xml格式文件
- 【数据库基础笔记】3、约束和隔离
热门文章
- 数据治理:数据标准的6大建设步骤及实施分享
- avro schema php,Hadoop之AVRO
- Python-函数式编程模块itertools、functools、operator
- STN32入门学习 第五天
- minecraft1.16.5 Java版本添加mod以及局域网联机总结
- 这几个SpringBoot前后端分离项目(附源码),改改就能换钱。。。
- MP3,AAC,AC3技术比较
- 微型计算机内存条,微型机的RAM子系统-微计算机原理-电子发烧友网站
- java中Int范围越界检测
- 小学老师郭金东纵身一跃勇救落水男孩