动画的分辨率无关网格

本文关键字:网格 分辨率 动画 | 更新日期: 2023-09-27 18:33:08

我正在开发一个用XNA,C#制作的游戏,我想启用基于xml的动画。

XML 将如下所示

<Animation>
<AnimatedObject>
<Filename>Spaceship_Jet_01</Filename>
<Flipped>false</Flipped>
<StartPosition_X>300</StartPosition_X>
<StartPosition_Y>500</StartPosition_Y>
<GOTOPosition_X>650</GOTOPosition_X>
<GOTOPosition_Y>500</GOTOPosition_Y>
<Time>10000</Time>
</AnimatedObject>
</Animation>

这会将对象移动到一侧,如下所示http://imm.io/odc7(对不起,X 坐标错误)

我注意到当播放器显示分辨率与我的不同时,会出现问题,因为我输入了有关对象来自何处以及必须去哪里的像素精确信息。

我想到了一个网格,这样我就可以告诉程序将对象从 (30,27) 移动到 (22,27),例如这是一个很好的解决方案吗?网格必须独立于分辨率,但瓷砖的数量必须是恒定的,我必须将对象绘制到屏幕上。这意味着我必须在位置 (22,27) 找到磁贴的正确像素位置,然后将对象"移动"到该磁贴。

有没有更好的方法可以做到这一点?如何使用 XNA 解决此问题?

动画的分辨率无关网格

如果你使用2D相机,你不会有任何问题...因为计算新视图以使其适应新决议并不困难。而且您不必更改任何加载方法或逻辑...

你可以做,但我不喜欢

  1. 使用 [0..1] 范围内的位置很难测量。

  2. 加载
  3. xml 时,使用新的分辨率因子固定位置...好丑...

    Pos *= NewResolutionSize/DefaultResolutionSize;