Godot学习记录---转场

GODOT游戏编程001 GODOT游戏编程第一天 听说GODOT是一款免费又好用的游戏编程软件,很感兴趣,今天下载来开始尝试学习。 网站https://godotengine.org/ 在上方下载界面,先下载编译文件,大约18M,往下还有一个发布文件,比较大 打开编辑软件来看看吧。Godot_v3.0.6-stable_win64.exe 点进去看看,嗯,看起来很简单。 好了,初步来看比较... 阅读详情

一、传送门坐标记录

1.new script 继承自 Marker2D

#传送门脚本

class_name Teleporter
extends Interactable

@export_file("*.tscn") var scene_file: String
@export var entry_point: String

func on_body_entered(player: Player):
	get_tree().change_scene_to_file(scene_file)
	

#坐标点脚本 

class_name  EntryPoint
extends Marker2D



func _ready() -> void:
	add_to_group("entry_points")

 #初始化坐标函数

func init_player_position(pos: Vector2) -> void:
	player.global_position = pos
	camera_2d.reset_smoothing()
	camera_2d.force_update_scroll()
	

 我们肯定会认为,只要在传送门脚本中切换场景后调用这个就好,但这在一些版本中不起作用,因为change_scene_to_file后旧场景被析构,无法获得tree中的entry_point

godot4.2 document如下

Error change_scene_to_file(path: String)

将位于给定路径 path 的场景加载进一个 PackedScene 并新建其实例,然后将正在运行的场景修改为这个场景。

成功时返回 OK;如果 path 不能被加载到一个 PackedScene 中,则返回 ERR_CANT_OPEN;如果该场景无法被实例化,则返回 ERR_CANT_CREATE。

二、 自动加载场景

此时我们需要一个自动加载场景

新建场景,添加脚本

extends Node


func change_scene(path: String, entry_point: String) -> void:
	var tree := get_tree()
	
	tree.change_scene_to_file(path)
	await tree.tree_changed
	
	for node in tree.get_nodes_in_group("entry_points"):
		if node.name == entry_point:
			tree.current_scene.init_player_position(node.global_position)
			break

点添加(一定是*。tscn,选gdscript会报错)

 这里全局变量是启用的,可以通过名称访问该变量,传送门这里就可以改成:

func on_body_entered(player: Player):
    GameManager.change_scene(scene_file, entry_point)

问题:角色朝向不正确
 之后在entry_point中设置一下player的方向,以确保player方向正确

问题:血量在场景转换后回满

把player的状态放在一个stats脚本中,把它作为节点放在GameManager中,然后player用这个GameManager中的Stats就行了扣血动画

三、淡入淡出效果

1.GameManager加入colorrect色块

 game节点改为canvaslayer,显示在HUD中,Layer调大

 使用补间动画来做这个效果

extends Node

@onready var player_stats: Stats = $PlayerStats
@onready var color_rect: ColorRect = $ColorRect

func _ready() -> void:
	color_rect.color.a = 0
	
func change_scene(path: String, entry_point: String) -> void:
	
	var tree := get_tree()
	var tween := create_tween()
	tween.tween_property(color_rect, "color.a", 1, 0.2)
	await tween.finished
	tree.change_scene_to_file(path)
	
	await tree.tree_changed
	for node in tree.get_nodes_in_group("entry_points"):
		if node.name == entry_point:
			tree.current_scene.init_player_position(node)
			break
	
	tween = create_tween()
	tween.tween_property(color_rect, "color.a", 0, 0.2)

godot4.2遇到了一些奇怪bug,tween在此并不生效,尝试animationplayer,却在切换好之后才播放,后来翻看文档,发现godot4.2的node path 语法变更!!!!

属性应当是color:a而不是color.a这也就是为何先前await不到finish信号,而且无任何报错!!!

extends Node

@onready var player_stats: Stats = $PlayerStats
@onready var color_rect: ColorRect = $ColorRect
@onready var animation_player: AnimationPlayer = $AnimationPlayer

func _ready() -> void:
	color_rect.color.a = 0
	
func change_scene(path: String, entry_point: String) -> void:
	
	var tree := get_tree()
	tree.paused = true
	var tween := create_tween()
	tween.tween_property(color_rect, "color:a", 1, 0.2)
	tween.set_pause_mode(Tween.TWEEN_PAUSE_PROCESS)
	await tween.finished
	tree.change_scene_to_file(path)
	await tree.tree_changed
	for node in tree.get_nodes_in_group("entry_points"):
		if node.name == entry_point:
			tree.current_scene.init_player_position(node)
			break
	tree.paused = false
	tween = create_tween()
	tween.tween_property(color_rect, "color:a", 0, 0.2)

【Godot4实战指南】三种高效场景切换方案对比:从基础到进阶 本文详细对比了Godot4中三种场景切换方案:基础方法、延迟加载和CanvasLayer+AnimationPlayer高级方案。从简单实现到带动画效果的平滑过渡,帮助开发者根据项目需求选择最佳方案,提升游戏流畅度和用户体验。特别推荐CanvasLayer方案用于商业项目,实现专业级场景过渡效果。 阅读详情

相关推荐

[Godot] Godot Game Tools - GGT v2.0.4 使用记录

https://viniguerrero.itch.io/godot-game-tools Godot Game Tools - GGT 发布页   https://www.youtube.com/channel/UCbEKIr_SrQriVr2zNnVTHTg 作者的油管主页 1. 角色骨骼与动画 1.1 下载安装 通过发布页下载到安装包之后 打开 blender 偏好设置 点击安装 找到 GGT 的根目录 找到根目录下面的 godot_game_tools.zip 点击安装 安装成功如图所示.

PriceCheap的博客 3437

godot脚本使用02

Processing 一些动作会触发回调和虚函数,所以写代码时不需要一遍遍的运行来检查代码的正确性。此外,很多动作都可以被动画播放器处理。然而,在脚本中对动画每一帧的处理有2种常见的情况---闲时处理和固定处理。 闲时处理被节点的set_process()函数激活,一旦激活,节点的_process()回调函数会被动画的每一帧调用,例如: func _ready(): set_

xiaoliu1234567890的专栏 1685

从零到开源:我的首款Godot4游戏开发全记录

摘要:本文记录了使用Godot4引擎开发2D像素游戏《丛林探险》的全过程。作者分享了从环境搭建到多平台发布的技术细节,包括场景构建、GDScript编程、敌人系统、UI设计等核心开发环节。文章重点介绍了Godot的节点系统、组件化设计思想以及性能优化方案,并总结了将项目开源的心得。这款射击游戏展现了一只狐狸在森林中对抗史莱姆的简单玩法,同时提供了Web和Windows双版本。作者认为Godot凭借其轻量级架构和友好语法,是独立游戏开发者的理想选择,适合初学者开启游戏开发之旅。

weixin_44536119的博客 2092

godot中的场景实例化上

1.一个scene是由多个node组成的树,而root node只能有一个。 2.godot 中一个scene可以完整的保存,多个scene 只保存需要的部分并不全部保存。  然后当编辑已经存在的或者新创建的scene时,之前保存的scenes就可以作为实例添加到当前的scene中,成为当前scene的一部分。 3.对上述理论的一个实践,首先下载 准备

xiaoliu1234567890的专栏 1131

Godot4 你的第一个2d游戏

第一个2d游戏开发

watch361的博客 3647

iPhone免越狱Git服务器搭建教程-iSH

iPhone免越狱Git服务器搭建教程

jts666的博客 4426

Godot Engine:用自动加载(AutoLoad)实现单例模式(Singleton Pattern)

自动加载(AutoLoad)是Godot Engine一个特有的并且设计非常巧妙的机制。

开发游戏的老王 6443

香橙派5玩转SATA SSD:一个被忽略的overlays配置项,让你的Ubuntu系统飞起来

本文详细介绍了如何在香橙派5上通过配置`overlays=ssd-sata`启用SATA SSD作为系统启动盘,大幅提升Ubuntu系统的性能。文章深入解析了设备树覆盖的工作原理,提供了完整的配置流程和性能优化建议,帮助开发者充分发挥香橙派5的硬件潜力。

weixin_30787531的博客 219

Godot 学习记录

看视频做的笔记 1

conan666666的博客 3504

CTP接口入门

该文章主要讲什么 这篇文章的面向对象是有一些C++基础,并且想用C++来做程式化交易的同学。 这篇文章可以算是我的程式化学习笔记中的一篇。其中介绍了CTP的简单的使用方式,并且附上了一些代码以及我在试用的时候遇到的一些小坑。 什么是CTP CTP是上海期货推出的一套可供程序调用的交易接口。就好比官方给程序化交易提供了的一个专门的业务窗口。 接口相关文件下载 CTP接口可以在上期...

weizehua的专栏 4万+

超详细!思岚S2激光雷达hector_mapping建图

使用思岚S2激光雷达,在ros平台上利用hector_mapping功能包实现建图功能

m0_50965539的博客 5591

Godot学习日志Day1

本文分享了作者在学习Godot引擎过程中的笔记,重点介绍了Godot在小型创意项目中的优势以及基础设置、场景搭建和角色创建的步骤。作者通过B站教程学习,详细记录了窗口大小、拉伸模式、渲染设置等基础配置,并深入探讨了场景节点、TileMap的使用方法。在角色创建部分,作者详细描述了精灵创建、动画制作和角色脚本编写的流程,展示了如何通过CharacterBody2D节点和AnimationPlayer实现角色动画。最后,作者提到添加碰撞体的步骤,并表达了对继续学习的期待。整体内容为初学者提供了Godot引擎的入

Kotomi的博客 1853

XC7K325T FPGA硬件设计实战:从板级原理图到高速接口优化

本文以XC7K325T FPGA为核心,详细阐述了从板级原理图设计到高速接口优化的完整硬件实战流程。内容涵盖芯片管脚与电源规划、时钟复位配置电路设计,并重点解析了DDR3内存子系统以及PCIe与光纤接口等高速电路的原理图与PCB设计要点,旨在帮助工程师构建稳定可靠的高性能硬件平台。

python9snake的博客 511

Godot 学习笔记

接触Godot的起因源于我想尝试自己制作游戏,而常见的游戏引擎有Unity、Unreal(虚幻),为什么我会选择Godot呢?接下来我会介绍,以及本笔记会记录我学习Godot的过程。本篇文章会不定期更新,上次更新时间:2023.1.29。

Star_tears的博客 1995

UE4打包为Framework库嵌入iOS原生工程

UE4打包为Framework库嵌入iOS原生工程

tangfuling1991的博客 1294

别再瞎改网络结构了!解决YOLO小目标检测痛点,我用这招把mAP提了15%

本文基于我7年工业PCB缺陷检测、无人机航拍、安防监控项目的一线落地经验,针对YOLO小目标检测最痛的「漏检率高、特征丢失、精度难提升」三大核心问题,拆解出。本文全程配套小目标特征丢失原理图、分块训练流程图、切图前后效果对比图、mAP提升柱状图、多方案性能对比表等可视化内容,从YOLO天生不擅长小目标的底层根源、方案核心原理、可直接复制的代码实现,到工业场景实测验证、新手必踩的10个坑位避坑指南,全链路讲透。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 386

从零打造Godot 2D射击游戏全记录

摘要: 作者Briana分享了使用Godot 4.3开发2D像素射击游戏《丛林探险》的全过程。项目采用模块化设计,通过GDScript实现角色控制、动画状态机、碰撞检测和对象池优化,并利用CanvasLayer构建UI系统。文章详细介绍了技术实现细节,包括多平台导出和itch.io发布经验,并开源项目代码。作者认为Godot凭借轻量、开源等特性非常适合独立开发者,未来计划扩展关卡和技能系统。项目地址和试玩链接已公开,为初学者提供了完整参考案例。

weixin_44536119的博客 1787

Java调用OpenDDS(2)-理解OpenDDS自带的Messager示例

理解Messenger

zhangzl419 1660

Godot学习记录(二)

position smoothing为位置平滑,可让相机移动更丝滑,从标尺上拖下参考线,可以量场景边界,然后填在limits里面,为防止玩家掉出场景,可在边框处加围栏或者用代码限制。顺便一提,画地图时,按住Ctrl键之后点击已画图块,就可以使用点击的图块,按Ctrl后选中一列图块就可以用这一列图块画,Ctrl+shift就可以画一个矩形区域。tips:对于有些图块,比如较高的蘑菇,可以在TileSet中扩展一个图块,之后设置纹理原点,这样可以让绘制地图更轻松,设置纹理原点时,可使用绘制选项批量绘制。

python_use的博客 2022

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Godot制作2D游戏入门自学记录

未经本人许可禁止转载。

zyq975522483的博客 5032

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Godot学习记录 简单回合战斗

PlayerUnit 位置(200,300)EnemyUnit位置(600,300)

习惯就好zz的专栏 585

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Godot 场景切换实战:让多场景加载丝滑不卡手的 4 个技巧

上次冲刺的构建,测试提了个单:"切关卡时卡三秒"。原因不神秘:**Godot 场景切换**用在了最原始的方式——在主线程同步加载一个 20MB 的关卡,这次**场景加载**占满了整整一帧,帧率从 60 跌到 8,屏幕黑两秒,出来时上一菜单的血条残影还挂在屏幕上。切换姿势怎么选、等待怎么藏、内存怎么管,下面三件事全来自实战。 ## 场景到底是什么:一张"房间"比喻图 把游戏想成一栋房子,每个**

gitblog_01162的博客 986

godot python_我的godot开发环境调教记录分享

由于之前用C++写了大部分游戏代码,现在打算较小改动的移植到新引擎上,感觉godot这个开源引擎比较合适。而且godot完全免费,同时任何个人或组织都可以用VSCommunity开发开源项目,也省了IDE的钱。开发工具上,先准备Visual C++Visual Studio Community https://www.visualstudio.com/vs/community/有注意事项,似乎初...

weixin_32025789的博客 1329

Unity转Godot记录(一)

(3)新建AnimationPlayer节点,点击“动画”-》新建-》输入idle,该动画共六帧,我希望FPS为10,所以总长为0.6s,点击打开循环,属性值右侧有一个小钥匙一样的东西,点击后即可添加关键帧。(2)点击绘制,物理层0,画在TileSet的地块上,之后TileMap选择地块绘制,左键绘制,右键删除,按住shift键可拖出一条直线。(1)新建TileMap,新建TileSet图集,把图片拖入底部,弹出窗框点击否,右侧点击物理层,之后新建。我的电脑只支持兼容版的,创建后启动。

python_use的博客 1497

探索Godot Engine的强大辅助:Godot Logger插件

探索Godot Engine的强大辅助:Godot Logger插件 在游戏开发的世界里,日志记录扮演着至关重要的角色,尤其是在使用像Godot Engine这样的开源游戏引擎时。对于那些渴望优化开发流程、提升调试效率的开发者们而言,Godot Logger插件无疑是一个福音。让我们一起深入了解这一神器,看看它是如何成为Godot项目中不可或缺的一员。 项目介绍 Godot Logger是一款专...

gitblog_00721的博客 855

探秘上帝的记事本:Godot Logger —— Godot 引擎的日志记录神器

探秘上帝的记事本:Godot Logger —— Godot 引擎的日志记录神器 godot-loggerLogging singleton for Godot Engine projects (GDScript plugin)项目地址:https://gitcode.com/gh_mirrors/go/godot-logger 在游戏开发的世界里,日志系统是开发者的重要伙伴,它可以帮助我们追踪...

gitblog_00054的博客 1165
上一篇: stm32学习记录---pwm
下一篇: STM32 ESP8266模块的探索&AT指令介绍
python_use
博客等级 码龄5年 430粉丝 38原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值