本章节效果图

小鸟撞上水管标志着一局游戏的结束,我们会用两个章节为它做一些收尾工作:

  • 1.小鸟“失控”坠落
  • 2.停止制造新的水管
  • 3.现存水管停止运动
  • 4.得分区域停止触发
  • 5.地面停止滚动
  • 6. 游戏结束的UI弹出

1.小鸟“失控”坠落

失控指的是发生碰撞以后,小鸟将无法再次受用户控制飞起来

# Bird.gd
extends RigidBody2Dfunc _ready():connect("body_entered",self,"on_body_entered")func _physics_process(delta):if Input.is_mouse_button_pressed(1):AudioManager.play("sfx_swooshing")linear_velocity = Vector2.UP*500angular_velocity = -3.0if rotation_degrees < -30:rotation_degrees = -30angular_velocity = 0if linear_velocity.y > 0.0:angular_velocity = 1.5func on_body_entered(_body):if _body is StaticBody2D:#碰撞以后call_deferred("set_physics_process",false)#停用_physics_process(delta)call_deferred("set_contact_monitor",false)#关闭碰撞检测AudioManager.play("sfx_hit")#播放碰撞音效$AnimationPlayer.play("die")#动画切换到死亡状态GameData.update_record()#更新最好成绩记录get_tree().call_group("GAME_STATE","on_game_over")#调用GAME_STATE的on_game_over方法

2.停止制造新的水管

#PipeManager.gd
extends Timervar pipe_scn = preload("res://Objects/Pipe.tscn")func _ready():add_to_group("GAME_STATE")#加入GAME_STATE组connect("timeout",self,"on_timeout")func on_timeout():var pipe = pipe_scn.instance()add_child(pipe)func on_game_over():paused = true#停止计时

3.现存水管停止运动

#Pipe.gd
extends Node2Dfunc _ready():add_to_group("GAME_STATE") #加入GAME_STATE组position.y += randf()*300-150func _process(delta):position += Vector2.LEFT*200.0*deltaif position.x < 0:queue_free()func on_game_over():set_process(false) #停用_process(delta)

4.得分区域停止触发

这个部分主要是防止某些时候,小鸟已经死亡,但是依然滚出得分区,从而触发得分。当然如果你设定的游戏规则允许这种情况发生,那么这一步可以不处理

#ScoreArea.gdextends Area2Dfunc _ready():add_to_group("GAME_STATE")connect("body_exited",self,"_on_body_exited")
func _on_body_exited(_body):if _body.name == "Bird":AudioManager.play("sfx_point")GameData.score += 1#加分以后通过SceenTree把新的分数更新给所有想接受这个消息的节点get_tree().call_group("SCORE","on_score_updated",GameData.score)func on_game_over():#call_deferred("set_monitoring",false)disconnect("body_exited",self,"_on_body_exited")#得分区域停止触发

5.地面停止滚动

还记得吗?地面无限滚动我们使用了3种方法实现,本节采用的是“文艺青年版”。如果你使用的是其它版本,就把本部分作为一个思考问题吧!

#Floor.gd
extends Spritefunc _ready():add_to_group("GAME_STATE")func on_game_over():material.set_shader_param("speed",0)

6. 游戏结束的UI弹出

本部分内容较多,将在下节继续

【手把手带你Godot游戏开发】FlappyBird:9.1 天下没有不OVER的GAME(上)相关推荐

  1. 【手把手带你Godot游戏开发】FlappyBird:1.Hello World

    资源下载地址 资源下载地址 本章节效果图 步骤 资源下载地址 本章节效果图 1. 导入资源 2. 添加一个"Game"节点 3. 添加背景 4. 设置分辨率 5. 调整背景图的大小 ...

  2. 【手把手带你Godot游戏开发 第二弹】名场面临摹(教程目录 10月30日 更新)

    在[上一弹]中,通过对网红手游<FlappyBird>的临摹,我们初步了解了GDScript脚本语言以及Godot游戏引擎的基本工作流程,并且大家的脑海里应该已经建立起了一个可运转的游戏架 ...

  3. 【手把手带你Godot游戏开发】新建Godot项目

    宅家期间倾情巨献:真·手把手Godot游戏开发系列教程 Godot Engine 3.2 stable 点击桌面的Godot Engine图标 进入项目管理器界面,如果是初次运行,你的项目列表应该是空 ...

  4. 【手把手带你Godot游戏开发】FlappyBird:2.坠落吧,小鸟

    本章节效果图 前言 在本章节开始之前,我建议大家再重温一下<Flappy Bird>的原作,一方面明确一下我们临摹的目标,另一方面也消解一下宅家的各种负面情绪. 今天玩<Flappy ...

  5. 【手把手带你Godot游戏开发】出道即巅峰,先做个盈利千万的小项目

    引言 你没看错,就是这个!FlappyBird! 曾经的网红,2014年前后由越南开发者阮哈东用不到一周时间开发的免费游戏,5000万的下载量,凭一条Banner广告,日入50000美金,一个热门手游 ...

  6. 【手把手带你Godot游戏开发】FlappyBird:4.1无限地面之Godot青年(AnimationPlayer)版

    本章节效果图 前言 为什么这个版本叫Godot版呢?因为如果用unity等引擎来实现这个小功能,大家可能不会选择它的动画系统,不是说其它引擎不能,是比较麻烦,大家宁愿选择写两行代码来实现.而Godot ...

  7. 【手把手带你Godot游戏开发】FlappyBird:5.1 无尽水管子滚滚来(一)

    本章节效果图 步骤 制作Pipe.tscn 按照下图的样子,在场景树上新建一棵子树(红框中的内容),"Pipe"是一个Node2D,其它节点的名称或前缀即代表其类型 关于Godot ...

  8. 【手把手带你Godot游戏开发】FlappyBird:7 心里有数(计分系统)

    文章目录 1.启用Use Custom User Dir 2.创建脚本 文件存取工具类FileHelper 游戏数据管理类GameData及单例化 非加密版 加密版 3.在游戏中触发加分 4.在游戏中 ...

  9. 【手把手带你Godot游戏开发】FlappyBird:9.2 天下没有不OVER的GAME(下)

    本章节效果图 文章目录 1. 搭建场景树 2. 设置AnimationPlayer 信息板显示(show) 信息板隐藏(hide,默认动画) 3. InfoBoard脚本 4. 运行 1. 搭建场景树 ...

最新文章

  1. mockito mock void方法_纯干货,浅谈Mockito在单元测试中的实际应用
  2. STM32F105使用固件库的时候串口乱码解决方法
  3. Python 判断一个数是不是质数
  4. 【测试】批量删除供应商配额(Quota )
  5. 在centos 7 下安装图形界面
  6. Use tcode ST01 to log authorization check
  7. 和redis_Redis 缓存
  8. Linux怎么查看保存的密码,在Linux中查看已保存的WiFi密码
  9. 计算机网络基础文档,计算机网络基础-20210608152532.pdf-原创力文档
  10. 特斯拉CEO马斯克再次动员员工 加快季度末交付
  11. [undo]ip address ppp-negotiate
  12. 网站移植到linux上后常犯的错误
  13. 经验分享:Windows聚焦图片位置在哪里,文件夹路径参上
  14. 信息安全实训——神奇的木马
  15. linux 入门 及一些常用命令及常用软件安装
  16. 阿里代运营一定要掌握的几大技能!
  17. 软件使用小技巧-Linux疑难杂症
  18. 尚硅谷-后台管理系统
  19. poj 1753 翻转棋子
  20. 跟风式、炒作式、跨业式三类创业者最容易挂掉

热门文章

  1. win7鼠标设置在哪_WIN7系统下ODIS和5054蓝牙配对教程
  2. SpringBoot中使用AMQ的两种方式(Java配置、注解方式)
  3. TCP三次握手、四次挥手
  4. STM32cubeIDE “make: *** [Core/Src/subdir.mk:36: Core/Src/stm32f1xx_hal_msp.o] Error 2“
  5. VUE集成echarts
  6. python relativedelta函数及与timedelta区别
  7. neo4j 4.x新建数据库,并解决报错Unsupported administration command: CREATE DATABASE
  8. 新媒体运营教程:运营活跃社群的玩法分析
  9. Open vSwitch详解
  10. Directshow学习笔记六-----重新压缩一个AVI文件(个人学习总结,仅供参考)