public override void _PhysicsProcess(float delta) { Joystick.LetsSetConnectionStatuses(); if (Joystick.IsConnected(Joystick.Sticks.First)) { var axis = Joystick.Axis(Joystick.Sticks.First); var direction = new Vector2(); var xVelocity = Speed * Mathf.Abs(axis.x) * delta; var yVelocity = Speed * Mathf.Abs(axis.y) * delta; if (axis.x > Joystick.Deadzone) { direction.x += xVelocity; } else if (axis.x < -Joystick.Deadzone) { direction.x -= xVelocity; } if (axis.y > Joystick.Deadzone) { direction.y += yVelocity; } else if (axis.y < -Joystick.Deadzone) { direction.y -= yVelocity; } if (direction != Vector2.Zero) { var collide = MoveAndCollide(direction); HandleTilemapCollision(collide); } } }