[手把手帶你Godot遊戲開發]FlappyBird:5.無盡水管子滾滾來

本章節效果圖

在這裏插入圖片描述

步驟

製作Pipe.tscn
  1. 按照下圖的樣子,在場景樹上新建一棵子樹(紅框中的內容),“Pipe”是一個Node2D,其它節點的名稱或前綴即代表其類型
    在這裏插入圖片描述

在這裏插入圖片描述
在"Pipe"上添加一個名爲"Pipe.gd"的腳本
在這裏插入圖片描述

#Pipe.gd
extends Node2D

func _process(delta):
	position += Vector2.LEFT*200.0*delta

運行一下場景
在這裏插入圖片描述
“穿越”一下試試
在這裏插入圖片描述

新建一個名爲"Objects"的文件夾

在這裏插入圖片描述

在節點"Pipe"上右鍵,將分支保存爲場景

有人問到底什麼是場景?場景就是保存成文件並且可以重複利用的節點樹

在這裏插入圖片描述

把場景保存到新建的"Objects"文件夾中
在這裏插入圖片描述

這時你會發現,原來的節點樹“縮成”了一個節點,旁邊多了一個場景標識,代表這個節點對應着一個場景
在這裏插入圖片描述
把剛纔保存的"Pipe.tscn"文件拖拽到場景裏幾個,然後運行試試

在這裏插入圖片描述
看!可以重複利用!

在這裏插入圖片描述

PipeManager

我們取得階段性勝利了,但是不能高興太早,說好的“無盡水管子滾滾來”,要是每個“水管子”都是這麼拖上來的,那麼每個FlappyBird背後都會有一個累死的程序員。所以我們需要動態的實例化柱子。

繼續搭建場景,把剛纔拖到場景中的柱子都刪掉,像下面這樣創建子樹(紅框中內容),“PipeManager”是一個Timer
關於Timer節點的使用請看這篇文章《Godot Engine:Timer節點使用範例》

在這裏插入圖片描述
設置一下Timer的參數,詳見《Godot Engine:Timer節點使用範例》
在這裏插入圖片描述

然後在"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)#將實例化的結果作爲自身的子節點

運行一下

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章