【问题标题】:How to calculate the position in matrix based on screen position如何根据屏幕位置计算矩阵中的位置
【发布时间】:2015-07-07 11:37:12
【问题描述】:

所以我正在重制 pacman,并使用 XNA 和 .NET 来构建它。

我设置了一个 448x576 的屏幕尺寸和一个 28x36 的矩阵,其中矩阵中的每个位置响应 16 像素 x 16 像素

448 / 16 = 28 576 / 16 = 36

这是我根据矩阵中的位置计算屏幕位置的方法:

public Vector2 GetPositionAt(int col, int row)
    {
        int X = ((col) * 16) + 8;
        int Y = ((row) * 16) + 8;

        return new Vector2(X, Y);
    }

相反的代码是:

float col = ((position.X - 8) / 16);
float row = ((position.Y - 8) / 16);

return new MatrixPosition((int)col, (int)row);

但这不起作用,因为仅当 pacman 位置位于矩阵中位置的中心时,位置才会更新。我想在它接近新点时成功。

让我用图片解释(抱歉还不能发布图片): http://imgur.com/a/CYekd

【问题讨论】:

    标签: c# .net matrix xna pacman


    【解决方案1】:
    float col = ((position.X - 8) / 16);
    float row = ((position.Y - 8) / 16);
    

    如果你替换 position.X = 8 和 position.Y = 18:

    col = ((8 - 8) / 16)
        = 0 / 16
        = 0
    row = ((18 - 8) / 16)
        = 10 / 16
        = 0
    

    整数不会按照您希望的方式工作。我理解您为什么使用 -8 来查找正方形的中心,但您不能简单地使用该方法正确划分。

    col = position.X / 16
    row = position.Y / 16
    

    但您仍然需要说明您在该牢房中的位置。不要过度计算。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-06
      • 1970-01-01
      • 2014-11-03
      • 2023-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多