godot玩家控制和其他3與4的一些程式差異
紀錄參考的教學影片使用時碰到的一些問題,主要是影片是3的教學而我使用的版本為4所碰到的問題。
參考的影片
https://www.youtube.com/playlist?list=PLhqJJNjsQ7KH_z21S_XeXD3Ht3WnSqW97
首先會碰到的是有一部分的宣告方式變更了,比如說讓參數顯示在引擎中屬性面版的export,其他還有onready等等,這種宣告的設定前面都多了@。
下方是這個有用到的部分。
@tool
@export var score: = 100
@onready var ...
@export_file var
等待執行(yield)
等待執行(yield)在新版中被移除了,新版中使用await來處理等待執行。
await $AnimationPlayer.amination_finished
#等於舊版的 yield($AnimationPlayer, "amination_finished")
提示訊息
用來在場景編輯中顯示錯誤訊息變成使用array處理,在4版中沒辦法像3版一樣使用空值,必須使用空陣列來處理。
func _get_configuration_warnings() -> PackedStringArray:
var string_array: = PackedStringArray([])
if not next_scene:
string_array = PackedStringArray(["The next scene property can't be empty", "中文測試"])
return string_array
輸入控制
有些參數變成內建,下方是我調整完後的方式,設定的部分照影片教學用即可。
#每偵執行 delta為上一偵的時間差
func _physics_process(delta: float) -> void:
#輸入
if Input.is_key_pressed(KEY_LEFT):
velocity.x -= 1
if Input.is_key_pressed(KEY_RIGHT):
velocity.x += 1
if Input.is_key_pressed(KEY_UP):
velocity.y -= 1
if Input.is_key_pressed(KEY_DOWN):
velocity.y += 1
velocity *= 50
#呼叫移動 這個函數會抓velocity來移動
move_and_slide()