【问题标题】:Can't get image to draw in MonoGame无法在 MonoGame 中绘制图像
【发布时间】:2013-09-25 20:06:48
【问题描述】:

我在 Photoshop 中构建了一个动画图像,其中包含 12 帧/图像。所以我试图让这个绘图函数遍历文件中的前 4 个图像。图片的宽度是1340像素。所以实际上第一行每340像素就有一个新的帧。有 3 行。整个图像分辨率为1330x1998。所以如果我写

new Rectangle(_animationFrame * 0, 0, 3100, 3900)

所以现在它显示所有图片中的第一张图片。所以如果我加一 animationFrame 它不会转到下一张图片。啊我在这里失败了什么?

编辑:

我是这样工作的

int[] x = { 0, -780, -1560, -2332 };


protected override void Draw(GameTime gameTime)        {
        GraphicsDevice.Clear(Color.CornflowerBlue);
        _spriteBatch.Begin();
_spriteBatch.Draw(_radarTexture, new Rectangle(x[i], 0, 3100, 3900), Color.White);
        _spriteBatch.End();
        base.Draw(gameTime);
}

更新函数将增加 x 数组中的值以通过帧。 当您尝试测试正确的比例和 x/y 坐标以使其正确时,这是荒谬的浪费时间。必须有更简单的方法,但无法得到它......

编辑 2 好吧,我想我明白了。当我单击打开选项时,Photoshop 显示为厘米,而不是像素坐标。谢谢大家帮忙。我会将第一个答案标记为正确,因为现在在这种情况下它是正确答案。谢谢

【问题讨论】:

  • 你认为任意数乘以零的结果是什么?

标签: c# xna sprite monogame


【解决方案1】:

也许你想做的是:

new Rectangle(_animationFrame * 340, ...)

因为你写的“每 340 像素都有一个新帧”。
正如评论所说,您现在正在做的是将一个数字乘以 0,这是没有用的。

编辑

我的理解是你想绘制你的 spritesheet 的前 4 个图像,每个图像的 width 为 340。他们的 height 我想是 1998/ 3,因为您的 spritesheet 中有 3 行。
所以,这是你的代码(_animationFrame 从 0 开始):

new Rectangle(_animationFrame * 340, 0, 430, 1998 / 3);
_animationFrame++;
if (_animationFrame == 4)
  _animationFrame = 0;

【讨论】:

  • 你能更准确地说 int x, int y, width, height 的实际含义吗?
  • 所以我试过了,这就是发生的事情。当我使用 width: 430 和 heigth 1998 / 3 时,它缩小了整个图片,所以我能够看到整个图像文件并且很快就被左移到了 rigth。当我使用 width:3100 和 heigth: 3900 时,它会放大到第一行的第一帧。当animationFrame得到+ 1时,它看起来就像整个图像只有一半向右。实际上在电话之外。我在这里上传了图片:link 所以你可以自己看看我在尝试什么。精确分辨率为 1330x1998。
  • 有趣。我将 x 坐标值设为 -780,它确实显示了下一张图片的 100%。奇怪的是,它的负值不像我的书告诉我的那样是正值,我需要尝试不同的值才能完全正确。嗯
  • 如果你想为一个精灵设置动画,你需要改变纹理来绘制每个绘制周期(或者如果你想要更慢),但是你必须只绘制整个精灵表的一部分才能正确地动画它.在您的情况下,您有 12 个框架,因此您必须绘制一个具有尺寸(1330/4、1998/3)的矩形。当然,这个 Rectangle 是你绘制的 Nullable<Rectangle> sourceRectangle 参数。
  • 嗯,好吧,但我在扼杀神经并尝试了 50 次之后就成功了,我得到了这些值 int[] x = { 0, -780, -1560, -2332 };所以 x[3] = -2332 超出了整个分辨率。这没有任何意义
猜你喜欢
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
相关资源
最近更新 更多