【Godot4自学手册】第二十四节利用DirectionalLight2D节点实现夜幕降临

根据我们的游戏情节,今天我们将要实现夜晚的来临,主要是用DirectionalLight2D节点来实现,当与NPC对完话后,整改场景逐渐变得黑暗。

一、添加DirectionalLight2D节点

切换到主场景main,选择根目录,单击添加子节点按钮,在创建节点对话框中选择DirectionalLight2D节点,单击创建按钮,这样就会在主场景中创建了该节点。该节点表示平行光,模拟覆盖整个场景的无数平行光线。可用于远离场景的强光,例如,模拟日光或月光。
请添加图片描述

主要利用该节点的energy属性来实现,因为是模拟夜幕降临,所以需要将Blend Mode设置Subtract。energy的取值从小到大表示场景从亮到暗,所以我利用代码逐渐将调整energy的取值从0调整到0.6。
请添加图片描述

二、编写代码

1.编写globals代码

定义daytimechanage表示白天到夜晚相互切换时信号。定义全局变量daytime,0表示白天;1表示黑天。给daytime赋值时候发射信号。具体代码如下;

signal daytimechanage(d:int)
var daytime:int=0:
	set(v):
		daytime=v
		if v==0:
			daytimechanage.emit(0)
			pass
		else:
			daytimechanage.emit(1)
			pass
2.编写NPC代码

在_reday函数中添加代码,当与NPC对完话收到timeline_ended信号后
调用_on_timeline_ended函数,代码如下:

func _ready():
	Dialogic.timeline_ended.connect(_on_timeline_ended)

编写_ on_timeline_ended将全局变量daytime设置为1,表示夜晚已经来临了。

func _on_timeline_ended():
	Globals.daytime=1
3.编写main代码

在_ready函数中添加连接daytimechanage信号函数_on_daytime_change,代码如下:

Globals.daytimechanage.connect(_on_daytime_change)

编写_on_daytime_change函数,把场景逐渐变黑,模拟夜晚来临,代码如下:

func _on_daytime_change(da:int):	 
get_tree().create_tween().tween_property($DirectionalLight2D,"energy",0.6,2)

三、演示效果

这样我们就实现了,当我们与NPC对完话后,夜幕就降临了,看一下演示效果:
请添加图片描述

同学们,下节再见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/461009.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux下的多线程编程:原理、工具及应用(2)

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:Flower of Life—陽花 0:34━━━━━━️💟──────── 4:46 🔄 ◀️ ⏸ ▶️ ☰ …

Acwing.1262 鱼塘钓鱼(多路归并)

题目 有 N个鱼塘排成一排,每个鱼塘中有一定数量的鱼,例如:N5时,如下表: 即:在第 1个鱼塘中钓鱼第 1分钟内可钓到 10条鱼,第 2分钟内只能钓到 8条鱼,……,第 5分钟以后再…

Vite为什么比Webpack快

一、引言 主流的前端构建工具包括以下几种: Webpack:当下最热门的前端资源模块化管理和打包工具。它能够将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源。同时,Webpack还支持代码分割,可以按需加载模块&#…

webshell隐藏哥斯拉流量修改sqlmap改ua

webshell隐藏 windows 1.隐藏shell attrib "文件名" s h attrib "文件名" -s -h 2.利用系统代号隐藏shell 创建文件夹名为Computer.{20D04FE0-3AEA-1069-A2D8-08002B30309D},此时文件夹将变成我的电脑,无法看到里面的东西&…

【快捷部署】002_Flink(1.17.2)

📣【快捷部署系列】002期信息 编号选型版本操作系统部署形式部署模式002Flink1.17.2CentOS 7.Xtgz包单机 👉 演示视频 Flink一键安装(本地模式) install-flink.sh 脚本内容 #!/bin/bash ####变量 ###执行脚本的当前目录 mydir$…

《Learning Hierarchical Modular Networks for Video Captioning》论文笔记

论文信息 原文链接: Learning Hierarchical Modular Networks for Video Captioning | IEEE Journals & Magazine | IEEE Xplore 原文代码 GitHub - MarcusNerva/HMN: [CVPR2022] Official code for Hierarchical Modular Network for Video Captioning. Ou…

HarmonyOS应用开发-Stage模型开发概述

基本概念 UI框架 HarmonyOS提供了一套UI开发框架,即方舟开发框架(ArkUI框架)。提供了应用UI开发所必需的能力:多种组件、布局计算、动画能力、UI交互、绘制。 方舟开发框架针对开发者提供了两种开发范式: 基于ArkTS…

springboot换日志框架后爆SLF4J: Class path contains multiple SLF4J bindings的解决办法

sringboot原本使用的是logback日志框架,将它去掉,修改为log4j2日志框架后,往往会出现以下错误: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/ch/qos…

java虚拟机的堆核心知识介绍

Java虚拟机(JVM)的堆(Heap)是Java内存模型中一个至关重要的部分。它是运行时数据区,用于存储Java对象实例。堆是垃圾收集器工作的地方,也是Java应用程序内存管理的关键区域。在本教程中,我们将深…

uniapp h5 部署

uniapp 配置 服务器文件路径 打包文件结构 //nginx 配置 server {listen 8300;server_name bfqcwebsiteapp;charset utf-8;#允许跨域请求的域,* 代表所有add_header Access-Control-Allow-Origin *;#允许带上cookie请求add_header Access-Control-Allow-C…

【SQL Server】实验四 数据更新

1 实验目的 掌握SQL数据更新语句的基本使用方法,如UPDATE、DELETE、INSERT。掌握更新语句条件中的嵌套查询使用方法。 2 实验内容 2.1 掌握SQL更新语句的基本使用方法 INSERT基本语句。UPDATE基本语句。DELETE基本语句。 2.2 掌握SQL更新语句的高级使用方法 …

汽车电子零部件(3):ADAS前视感知系统FLC

前言: 比如车道保持和车道改变这种场景,如何进行车道的识别,如何进行周围车辆的识别,这算是ADAS中的一个场景,其中就会用到FLC前视感知系统。还有比如前向物体识别,前向车辆识别等。 再往大里说那就是车联网了: 除了前向也可能有其他部位

【计算机网络篇】计算机网络的性能指标

文章目录 🍔计算机网络的性能指标🗃️常见的计算机网络性能指标⭐速率⭐带宽⭐吞吐量⭐时延⭐时延带宽积⭐往返时间⭐利用率⭐丢包率 🔎总结 🍔计算机网络的性能指标 计算机网络的性能指标被用来从不同方面度量计算机网络的性能 …

如何通过做自己喜欢的事来赚钱?

今天想要跟大家分享一本我今年反复读过最多次的一本书《The Almanack of Naval Ravikant 纳瓦尔宝典》。我之前也有介绍过Naval Ravikant,他是硅谷创业界的一位传奇人物,创办了知名的天使投资平台AngelList。早期他还投资超过了200家科技公司,其中很多都成为了今天的科技巨头…

SpringBoot集成Redisson实现接口限流

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Dat…

MIT 6.S081---Lab: locks

Memory allocator (moderate) 修改kernel/kalloc.c,修改kmem声明并定义结构体数组: 修改kernel/kalloc.c中的kinit函数,对kmemList进行初始化: 修改kernel/kalloc.c中的kfree函数,获取当前的cpuid并将释放的内存添加到…

Ubuntu Linux - Primavera P6 EPPM 安装及分享

引言 根据计划,近日我制作了基于Ubuntu Linux 的P6虚拟机环境,同样里面包含了全套P6 最新版应用服务 此虚拟机仅用于演示、培训和测试目的。如您在生产环境中使用此虚拟机,请先与Oracle Primavera销售代表取得联系,以获取所需的应…

抖音获得抖音商品详情 API 返回值说明

抖音(Douyin)的商品详情API返回值通常会包含有关商品的详细信息。这些信息可能包括但不限于商品ID、商品名称、商品价格、商品图片、商品描述、商品销售属性等。以下是一个简化的抖音商品详情API返回值示例和说明: 调用链接获取详情 item_g…

江科大stm32学习笔记【6-2】——定时器定时中断定时器外部时钟

一.定时器定时中断 1.原理 2.硬件 3.程序 此时CK_PSC72M,定时1s,也就是定时频率为1Hz,所以可以PSC7200-1,ARR10000-1。 Timer.c: #include "stm32f10x.h" // Device headerextern uint16_t Num;//声明跨文件的…

2024大广赛朗圣药业都有哪些命题?

大广赛官网网站在3月8日公布了朗圣药业2024年的赛事命题,本文就给大家介绍一下都有哪些广告主题和形式。 广州朗圣药业有限公司成立于2003年,是专注于生殖健康用药、慢性病用药、外用药领域的研发、生产、营销于一体的高科技制药企业。秉持“让人类生殖…