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