【问题标题】:resolution independent grid for animations?动画的分辨率独立网格?
【发布时间】:2012-05-04 18:13:55
【问题描述】:

我正在开发一个用 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 解决这个问题?

【问题讨论】:

  • 如何不以像素为单位设置 x 和 y,而是以百分比设置它们,例如,x 的 0 值表示最左边,1 表示最右边?然后你可以很容易地计算出目标位置,你只需要做 XValue * GraphicsDevice.PresentationParameters.BackBufferWidth;或类似的东西。

标签: c# xna grid positioning pixel


【解决方案1】:

如果您使用 2D 相机,您不会有任何问题...因为计算新视图以使其适应新分辨率并不困难....而且您无需更改任何加载方法,也无需更改逻辑...

你可以,但我不喜欢

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

  2. 在加载 xml 时用新的分辨率因子修复位置...很难看...

    Pos *= NewResolutionSize/DefaultResolutionSize;
    

【讨论】:

  • 谢谢这个 Pos *= NewResolutionSize/DefaultResolutionSize;解决了我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 2017-05-03
  • 2016-09-10
相关资源
最近更新 更多