Godot游戏开发之FlappyBird(十二)------再来一局

本系列是根据老师的教程做的, 中间遇到些小问题, 于是把自己做的过程记录下来, 便于下次查看, 如有错误, 欢迎批评指正, 附上老师的原地址: 开发游戏的老王

本节效果

在这里插入图片描述

应用总调度:Application场景

  1. 创建新场景, 重命名:Application
    在这里插入图片描述
    在这里插入图片描述
  2. 将"Application"设置为主场景 (游戏开始的场景)
    在这里插入图片描述
  3. 添加管理脚本
#Application.gd
extends Node

var game_tscn = preload("res://Scenes/Game.tscn")#把"Game.tscn"预加载进来, 注意改成自己的路径

func _ready():
	add_to_group("GAME_STATE")#把自己加入"GAME_STATE"组
	get_tree().call_group("GAME_STATE","on_game_start")#调用"GAME_STATE"组中成员的"on_game_start"方法
	
func on_game_start():
	var game = get_node_or_null("Game")#判断是否有名为"Game"的子节点
	if game != null: #判断是否有名为"Game"的子节点,如果有则移除并释放
		remove_child(game)
		game.queue_free()
	game = game_tscn.instance()#然后实例化一个新的"Game.tscn"并
	add_child(game)#作为自己的子节点,开始新的一局

在这里插入图片描述

分数归零

在Game上添加一个脚本Game.gd

#Game.gd
extends Node

func _ready():
	GameData.score = 0

在这里插入图片描述

点击屏幕触发: 再来一局

修改InfoBoard.gd代码

set_process(false)#刚开局先停用_process(delta)方法

###############分割线################

func _process(delta):#一旦开启_process(delta),用户再次点击屏幕,将开始新的一局
	if Input.is_mouse_button_pressed(1):
		get_tree().call_group("GAME_STATE","on_game_start")

func on_board_shown():#由动画触发的回调函数,负责开启_process(delta)方法
	set_process(true)

在这里插入图片描述
可以看出一开始先停用_process(delta)方法, 避免每次一碰屏幕就重新启动

而最后的on_board_shown函数需要外部去调用, 只有在每次死亡的时候才会需要调用这个函数, 所以这里可以放在死亡动画触发的代码位置, 也可如下通过AnimationPlayer调用:

打开UI场景的AnimationPlayer, 在show的最后添加方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行一下(F5)

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值