0

我想使用我自己的单位“系统”。1 像素之类的东西等于 0.01 单位。

现在,当我想用​​自己的 Unitsystem 绘制一些东西时,我总是必须将值乘以/除以 100。我找到了一些提到在 SpriteBatch.Begin 中使用矩阵的答案,但我不知道如何。

有人可以帮我吗^^?

4

2 回答 2

1

Spritebatch.Begin() 的最后一个参数可以是变换矩阵。

TransformMatrix = Matrix.CreateScale(0.01);
spriteBatch.Begin(SpriteSortMode.Immediate, null, null, null, null, null, TransformMatrix);
于 2015-08-12T09:07:31.070 回答
0

Farseer Physics 为ConvertUnits这类事情提供了一个类。根据记忆,您感兴趣的方法是ToSimUnitsToDisplayUnitsFarseer 文档是这样描述的:

// 1 meter = 64 pixels
ConvertUnits.SetDisplayUnitToSimUnitRatio(64f);

// If you object is 512 pixels wide and 128 pixels high:
float width = ConvertUnits.ToSimUnits(512f) // 8 meters
float height = ConvertUnits.ToSimUnits(128f) // 2 meters

所以规则是:

  1. 每当您需要向引擎输入像素时,您需要先将数字转换为米。
  2. 每当您从引擎中获取一个值并将其绘制在屏幕上时,您都需要先将其转换为像素。

如果您遵循这些简单的规则,您将获得稳定的物理模拟。

在相关主题上,您应该研究解决方案独立性

于 2015-08-15T00:39:24.580 回答