Godot游戏开发之FlappyBird(五)------添加障碍物

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

本节效果

在这里插入图片描述

添加障碍物

  1. 添加如下节点,可以按节点名称来搜_Up和_Down是复制的时候加的后缀
    在这里插入图片描述
  2. 养成习惯,改一下节点名称
    在这里插入图片描述
  3. 把管子的图片放进来,并调整一下大小和位置
    在这里插入图片描述
    在这里插入图片描述
  4. 添加碰撞体(消除警告⚠),添加上后图形表面会覆盖一层淡蓝色的矩形
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  5. 把整个Pipe移动到小鸟的前面,再添加一个移动的脚本试试
    在这里插入图片描述
    在这里插入图片描述
extends Node2D

func _ready():
	position.y += randf()*300-150 #Y轴随机偏移量的范围(-150,150)

func _process(delta):
	position += Vector2.LEFT*200.0*delta #每隔一段时间向左移动一下
	if position.x < 0:
		queue_free() #当柱子超出范围,释放节点(从游戏中删除,避免占用资源)

  1. 运行一下,效果大概是这样
    在这里插入图片描述
    在这里插入图片描述

添加很多障碍物

  1. 将分支保存为场景,大概相当于Unity的预制体,每次直接把预制体拿出来用就行,不用像上面一样一步步添加一个障碍物
    在这里插入图片描述

有人问到底什么是场景?场景就是保存成文件并且可以重复利用的节点树

  1. 把场景保存到Objects文件夹内,方便下次使用,这时候会发现原本的节点树变成孤零零的一个节点了,旁边多了一个场景标识
    在这里插入图片描述
  2. 把Pipe.tscn拖拽几个到场景里面, 运行试试, 注意几个Pipe是并列的关系
    在这里插入图片描述

自动添加障碍物

要是每个“水管子”都是这么拖上来的,那么每个FlappyBird背后都会有一个累死的程序员。所以我们需要动态的实例化柱子。

  1. 先把之前Game场景里的的Pipe删掉, 然后在Game下创建一个Timer节点,改名为PipeManager
    在这里插入图片描述
    在这里插入图片描述
  2. 看一下Timer的参数
    在这里插入图片描述
属性说明
Process ModeIdle表示在_process中更新;Physics表示在_physics_process中更新
One Shot是否是一次性的
Wait Time间隔时间,单位是秒
Auto Start是否自动启动

在这里插入图片描述

  1. 在PipeManager节点上添加脚本"PipeManager.gd"
    在这里插入图片描述
#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)#将实例化的结果作为自身的子节点

实例化场景官方文档 上面代码不理解可以点进去看看

Timer节点使用可以参考这里

  1. 运行一下, 发现所有的管子都在一个高度上, 不合理

管子随机高度

  1. 打开Pipe.gd的脚本, 添加两行代码就行, 就是在水管准备(ready)生成的时候给一个随机高度
    在这里插入图片描述
func _ready():
	position.y += randf()*300-150 #Y轴随机偏移量的范围(-150,150)
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值