godot 4 輸入設定


記錄一下godot使用程式更改輸入設定的方法。

預設的按鍵設定在專案->專案設定中,切換到輸入映射的tab中直接設定即可。
下方記錄一下如果要使用程式變更按鍵設定的方法。

方法

使用InputMap來進行輸入映射的調整

恢復專案設定

InputMap.load_from_project_settings()

取得指定動作

InputMap.action_get_events("action名稱")

#判斷指定動作是否存在
if InputMap.action_get_events("action名稱").size() != 0:

遍歷動作

for action in InputMap.get_actions():
	print(action)

取得按鍵文字as_text()

for value in InputMap.action_get_events(action):
	text = value.as_text()

加入按鍵,這邊使用_unhandled_input來取得按下的按鍵資料

func _unhandled_input(event):
  if event.pressed:
    InputMap.action_add_event("action名稱", event)

移除動作

InputMap.action_erase_events("action名稱")

#只移除指定按鍵
#value為 action_get_events取得的事件
InputMap.action_erase_event("action名稱", value)

另外可以用 is InputEventKey判斷輸入方式
稍微試了一下使用繪圖板的筆會被視為滑鼠處理
下方的程式可以印出類型作為檢查用,其中判斷字串ui_排除預設值

	for action in InputMap.get_actions():
		if action.find("ui_") == -1:
			if InputMap.action_get_events(action).size() != 0:
				for value in InputMap.action_get_events(action):
					print(value)
					if(value is InputEventKey):
						print("key")
					elif(value is InputEventJoypadButton):
						print("Joypad")
					elif(value is InputEventMouseButton):
						print("Mouse")
					elif(value is InputEventScreenTouch):
						print("Touch")
					else:
						print("other")

參考資料

https://docs.godotengine.org/zh-tw/4.x/classes/class_inputmap.html https://godotengine.org/asset-library/asset/2578

Tags : godot