Skip to content
Snippets Groups Projects
Commit 4b4f1b4d authored by Annika Österdiekhoff's avatar Annika Österdiekhoff
Browse files

fix joystick movement

parent 0f60e951
No related branches found
No related tags found
1 merge request!45Resolve "Controller Support"
Pipeline #45988 passed
......@@ -182,36 +182,38 @@ class PyGameGUI:
if np.linalg.norm(move_vec) != 0:
move_vec = move_vec / np.linalg.norm(move_vec)
print("move_vec keys", move_vec)
action = Action(
key_set.name, ActionType.MOVEMENT, move_vec, duration=1 / self.FPS
)
self.send_action(action)
def handle_joy_stick_input(self, joysticks):
"""MISSING
"""Handles joystick inputs for movement every frame
Args:
joysticks: list of joysticks
"""
# Axis 0: joy stick left: -1 = left, ~0 = center, 1 = right
# Axis 1: joy stick left: -1 = up, ~0 = center, 1 = down
# see control stuff here (at the end of the page): https://www.pygame.org/docs/ref/joystick.html
for joystick in joysticks.values():
# Usually axis run in pairs, up/down for one, and left/right for
# the other. Triggers count as axes.
axes = joystick.get_numaxes()
# Usually axis run in pairs, up/down for one, and left/right for the other. Triggers count as axes.
move_vec = np.zeros(2)
for i in range(axes):
axis = joystick.get_axis(i)
print("axis key", axis)
# joy stick left --> left & right
if axes == 0:
move_vec[0] += axis
# joy stick right --> up & down
elif axes == 1:
move_vec[1] += axis
print("move_vec joystick before ", move_vec)
# You may want to take into account some tolerance to handle jitter,
# and joystick drift may keep the joystick from centering at 0 or using the full range of position values.
# FIXME: hardcoded threshold for tolerance
tolerance_threshold = 0.2
# axis 0 = joy stick left --> left & right
axis_left_right = joystick.get_axis(0)
if abs(axis_left_right) > tolerance_threshold:
move_vec[0] += axis_left_right
# axis 1 = joy stick right --> up & down
axis_up_down = joystick.get_axis(1)
if abs(axis_up_down) > tolerance_threshold:
move_vec[1] += axis_up_down
if np.linalg.norm(move_vec) != 0:
move_vec = move_vec / np.linalg.norm(move_vec)
print("move_vec joystick", move_vec)
action = Action(
"0", ActionType.MOVEMENT, move_vec, duration=1 / self.FPS
)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment