ETH官方钱包

前往
大廳
主題

godot玩家控制和其他3與4的一些程式差異

月月鴞 | 2023-03-05 20:05:20 | 巴幣 100 | 人氣 396

同步發(fā)表於blog

紀錄參考的教學(xué)影片使用時碰到的一些問題,主要是影片是3的教學(xué)而我使用的版本為4所碰到的問題。  

參考的影片  
https://www.youtube.com/playlist?list=PLhqJJNjsQ7KH_z21S_XeXD3Ht3WnSqW97

首先會碰到的是有一部分的宣告方式變更了,比如說讓參數(shù)顯示在引擎中屬性面版的export,其他還有onready等等,這種宣告的設(shè)定前面都多了@。  
下方是這個有用到的部分。  

@tool
@export var score: = 100
@onready var ...
@export_file var


等待執(zhí)行(yield)

等待執(zhí)行(yield)在新版中被移除了,新版中使用await來處理等待執(zhí)行。  

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



輸入控制  

有些參數(shù)變成內(nèi)建,下方是我調(diào)整完後的方式,設(shè)定的部分照影片教學(xué)用即可。  

#每偵執(zhí)行 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
    #呼叫移動 這個函數(shù)會抓velocity來移動
    move_and_slide()


創(chuàng)作回應(yīng)

魔心 ? ?ω??
感覺變好多……這樣我是不是直接開始學(xué)Godot 4比較好,還是繼續(xù)學(xué)3.5?
2023-05-23 06:43:10
月月鴞
可能要看你的取捨,3.5資料齊全很多,4前陣子還沒看到整套教學(xué)(最近比較忙沒有查),資料與整套流程會3.5比較齊全,4的資料還是一塊一塊的功能要自己拚出來,然後有些4的官方範(fàn)例之前試的時候還有問題我這跑不起來,不知道哪時會修正...,如果確定自己用不到4的功能繼續(xù)用3.5也是個選擇
2023-05-23 21:23:55

相關(guān)創(chuàng)作

更多創(chuàng)作