本章節效果圖
步驟
製作Pipe.tscn
- 按照下圖的樣子,在場景樹上新建一棵子樹(紅框中的內容),“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)#將實例化的結果作爲自身的子節點
運行一下