/// <summary> /// Moves player based on user input. /// </summary> /// <param name="gameTime"></param> public override void UpdatePlayer(GameTime gameTime) { // Move on input // // Don't move if animating attack if (VisualCharacter != null && VisualCharacter.CharacterAnimator.CurrentAnimation != Animator.Animations.Attack) { // Get direction from input // _desiredMoveDirection = Vector2.Zero; if (_input.IsKeyDown(Input.eInput.LEFT)) { _desiredMoveDirection.X -= 1; } if (_input.IsKeyDown(Input.eInput.RIGHT)) { _desiredMoveDirection.X += 1; } if (_input.IsKeyDown(Input.eInput.UP)) { _desiredMoveDirection.Y -= 1; } if (_input.IsKeyDown(Input.eInput.DOWN)) { _desiredMoveDirection.Y += 1; } // Set rotation to 'direction'. if (_desiredMoveDirection != Vector2.Zero) { Rotation = _desiredMoveDirection.ToAngle(); } // Move in 'direction'. // _body.ApplyForce(_desiredMoveDirection * (MoveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds)); } // Attack on input // if (_input.IsKeyPressed(Input.eInput.PRIMARY)) { // Send attack over network. _clientNetworkManager.SendAttackPacket(this); // Perform visual attack. if (VisualCharacter != null) { VisualCharacter.CharacterAnimator.SetAnimation(Animator.Animations.Attack, true); } #if WINDOWS && DEBUG // Log attack Console.WriteLine("Local Attack."); #endif } // Sync player position to pysical body // _body.LinearVelocity = Vector2.Zero; Position = ConvertUnits.ToDisplayUnits(_body.Position); // Updates visual player base.UpdatePlayer(gameTime); }