示例#1
0
    public void Update(GameTime gameTime)
    {
        float time = (float)gameTime.ElapsedGameTime.TotalSeconds;

        CameraInputs inputs = CameraInputs.Instance;

        if (inputs.IsZoomIn())
        {
            Zoom += time;
        }
        if (inputs.IsZoomOut())
        {
            Zoom -= time;
        }

        Transform =
            Matrix.CreateTranslation(-Position.X, -Position.Y, 0f) *
            Matrix.CreateRotationZ(Rotation) *
            Matrix.CreateTranslation(Origin.X, Origin.Y, 0f) *
            Matrix.CreateScale(Zoom);

        Origin = ScreenCenter / Zoom;

        Vector2 position = Position;

        position.X = Position.X + (Focus.X - Position.X) * MoveSpeed * time;
        position.Y = Position.Y + (Focus.Y - Position.Y) * MoveSpeed * time;
        Position   = position;
    }
    public void Update(GameTime gameTime)
    {
        CameraInputs inputs   = CameraInputs.Instance;
        float        time     = (float)gameTime.ElapsedGameTime.TotalSeconds;
        float        speed    = time * 500f;
        Vector2      movement = Vector2.Zero;

        if (inputs.IsMoveLeft())
        {
            movement.X -= speed;
        }
        if (inputs.IsMoveRight())
        {
            movement.X += speed;
        }
        if (inputs.IsMoveUp())
        {
            movement.Y -= speed;
        }
        if (inputs.IsMoveDown())
        {
            movement.Y += speed;
        }
        if (inputs.IsZoomIn())
        {
            this.Zoom += time;
        }
        if (inputs.IsZoomOut())
        {
            this.Zoom -= time;
        }
        if (inputs.IsCameraReset())
        {
            Reset();
            movement = Vector2.Zero;
        }
        this.Move(movement);
    }