我正在制作一款Pacman的翻版游戏,使用XNA和.NET构建。
我设置了一个448x576的屏幕尺寸和一个28x36的矩阵,其中矩阵中每个位置对应16像素乘以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