Пример #1
0
        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);
                }
            }
        }