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()
Tags : godot