Exemple #1
0
        public override void Update(GameTime gameTime)
        {
            KeyboardInputManager.Begin();

            // Move camera
            if (KeyboardInputManager.IsKeyDown(Keys.Left))
            {
                _cameraPosition.X += 12f * DeltaTime;
            }

            if (KeyboardInputManager.IsKeyDown(Keys.Right))
            {
                _cameraPosition.X -= 12f * DeltaTime;
            }

            if (KeyboardInputManager.IsKeyDown(Keys.Up))
            {
                _cameraPosition.Y -= 12f * DeltaTime;
            }

            if (KeyboardInputManager.IsKeyDown(Keys.Down))
            {
                _cameraPosition.Y += 12f * DeltaTime;
            }

            // We make it possible to rotate the player body
            if (KeyboardInputManager.IsKeyDown(Keys.A))
            {
                _playerBodyComponent.ApplyTorque(10);
            }

            if (KeyboardInputManager.IsKeyDown(Keys.D))
            {
                _playerBodyComponent.ApplyTorque(-10);
            }

            if (KeyboardInputManager.IsKeyPressed(Keys.Space))
            {
                _playerBodyComponent.ApplyLinearImpulse(new Vector2(0f, 10f));
            }

            Camera2D.Position = _cameraPosition;

            KeyboardInputManager.End();

            base.Update(gameTime);
        }
        public void Update()
        {
            var cameraPosition = Vector2.Lerp(_characterEntity.Position, Scene.Camera2D.Position, 0.125f);

            if (_impulse == 0f)
            {
                _impulse = _characterBodyComponent.Mass * 10 / Scene.DeltaTime;
            }

            // Moving updates
            if (Scene.KeyboardInputManager.IsKeyDown(Keys.Right))
            {
                _characterBodyComponent.ApplyTorque(-_impulse * 5);

                if (Scene.Camera2D.Position.X < _characterEntity.Position.X)
                {
                    Scene.Camera2D.Position = new Vector2(cameraPosition.X, Scene.Camera2D.Position.Y);
                }
            }

            if (Scene.KeyboardInputManager.IsKeyDown(Keys.Left))
            {
                _characterBodyComponent.ApplyTorque(_impulse * 5);

                if (Scene.Camera2D.Position.X > Scene.ScreenCenter.X)
                {
                    Scene.Camera2D.Position = new Vector2(cameraPosition.X, Scene.Camera2D.Position.Y);
                }
            }

            // Jumping updates
            if (Scene.KeyboardInputManager.IsKeyPressed(Keys.Up) || Scene.KeyboardInputManager.IsKeyPressed(Keys.Space))
            {
                _characterBodyComponent.ApplyLinearImpulseY(_impulse);
            }

            if (_characterEntity.Position.Y < Scene.ScreenCenter.Y)
            {
                Scene.Camera2D.Position = new Vector2(cameraPosition.X, cameraPosition.Y + Scene.ScreenCenter.Y * 0.45f);
            }
        }