Sticks.gd 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. extends HBoxContainer
  2. #
  3. @onready var DirectionButton : Control = $Direction/Direction/Button
  4. @onready var DefaultStickPosition : Vector2 = DirectionButton.get_position()
  5. var leftStickPressed : bool = false
  6. var lastMove : Vector2 = Vector2.ZERO
  7. #
  8. func GetMove() -> Vector2:
  9. if leftStickPressed and DefaultStickPosition.x != 0.0 and DefaultStickPosition.y != 0.0:
  10. var move : Vector2 = DirectionButton.get_position() / DefaultStickPosition - Vector2.ONE
  11. lastMove = move
  12. return move
  13. else:
  14. return Vector2.ZERO
  15. #
  16. func _on_direction_button_down():
  17. leftStickPressed = true
  18. func _on_direction_button_up():
  19. leftStickPressed = false
  20. DirectionButton.position = DefaultStickPosition
  21. func _physics_process(_delta):
  22. if leftStickPressed:
  23. var newPos : Vector2 = get_local_mouse_position() - DirectionButton.get_size() / 2
  24. newPos.x = clampf(newPos.x, 0.0, 100.0)
  25. newPos.y = clampf(newPos.y, 0.0, 100.0)
  26. DirectionButton.position = newPos
  27. func _press_button(buttonId : JoyButton):
  28. DeviceManager.SendEventJoy(buttonId, true)
  29. func _release_button(buttonId : JoyButton):
  30. DeviceManager.SendEventJoy(buttonId, false)