文章目录
博客的参考资料,是来自 开发游戏的老王的5.2 无尽水管子滚滚来(二)的Godot Engine:TImer节点使用范例
导言:Timer节点是什么呢?刚开始模仿制作的时候,看它对应的节点形状像一个时光沙漏,跟时间肯定有着什么千丝万缕的关系,它在Godot中有着什么特殊的含义吗。
1.Timer——在其他语言中的含义
那么提到Timer中的特殊含义,就又不得不提它在其他地方的表现。
其实Timer不光在Godot中起着重要的作用,在其他的编程语言中,也都或多或少有着它的身影。
其中在Java程序设计中,更为常见。
遇到所需要按时间计划执行简单任务的情况下,Timer是最常被使用到的工具类。使用Timer可以来调度TimerTask的实现者来实现任务,有两种方式,一种是使得任务在指定时间被执行一次,另一种是从某一指定时间开始周期性的执行任务。它其实就像是闹钟一样,固定我们去做某件事情,或者在某段固定的时间去做某件重复的事情。
2.Timer——在Godot的含义
在Godot中的TImer呢?我们来先上图。
其实在图片中,我们看得出官方对它的定义是倒数计时器。
Timer在Godot中的含义,其实就是接近等同于我们对Java它的理解,但是Java和Godot在Timer的使用中还是有着不一样之处的。(毕竟Java和Godot有着区别。)
3.常用调整
Timer节点中,其中最较为常用的是Wait Time与Auto Start。
从字面上理解:
Wait Time:是等候时间的长度,
Auto Start:是自动开启的选择
可以通过调整其对应的Timer节点中Wait time的数值调整和Auto Start的是否启用,可对我们所需要重复做的事件进行更改。
这便是对应需要调整的位置。
4.实际分析Timer节点在FlappyBird中的游戏设计理念
重温经典FlappyBird
在玩过游戏之后,我们分析一下实际游戏设计情况中。从而我们得知,水管是需重复及其间隔一定时间出现,游戏才拥有一定的趣味性。
若一只小鸟只遇见一个水管,便轻松越过,游戏永远不会停止,但游戏已经丧失了我们希望的乐趣。
理念:所以在此之前,先做好一个普通的水管,并将它做为整体重复的目标。让这个水管作为一个实例,将此水管设置为一个固定的场景,这样,只需要重复该场景,便可让水管无限重复,可做到游戏所需要的趣味性。
5.在FlappyBird中的游戏设计操作
那么便在Game.tscn中新建一个Timer节点,利用脚本,使得其场景重复。
Timer可以随意起名字,为了方便。我们这里按照开发游戏的老王的教程中,将Timer的节点名称改名为PipeManager,然后添加对应的教程脚本。
这里注意,,脚本中的路径与实际路径是否一致,要不然会出现代码报错的问题!!!
大家可以根据所需要的重复条件,可以调整水管出现的重复间隔时间,以及对自动开启的选项。
具体的操作内容,可参考【手把手带你Godot游戏开发】FlappyBird:5.1 无尽水管子滚滚来(一)的Godot教程。
6.附脚本内容
这是水管重复出现的脚本代码内容
#PipeManager.gd
extends Timer
var pipe_scn = preload("res://Objects/Pipe.tscn")#将要实例化的场景文件预加载进来
func _ready():
connect("timeout",self,"on_timeout")#将"timeout"信号连接到"on_timeout"方法
func on_timeout():
var pipe = pipe_scn.instance()#实例化
add_child(pipe)#将实例化的结果作为自身的子节点
具体以上的代码讲解,在GDScript 代码笔记(一)里
在此欢迎各位批评指正,
也再次感谢 开发游戏的老王的Godot教程。
你的点赞是我更新的动力~