【问题标题】:Rotation doesn't work correctly旋转无法正常工作
【发布时间】:2014-04-14 19:42:59
【问题描述】:

我认为我的 RotationOrigin 参数不正确。

首先,我正在用 XNA 编写一个小型角色扮演游戏,我想根据它看起来的方向旋转一个精灵。我肯定有正确的旋转和一切,但我想我可能画错了。

为什么这不起作用?

spriteBatch.Draw(Texture, Position, null, Color.White, Rotation, new Vector2(Texture.Width/2, Texture.Height/2), 1, SpriteEffects.None,  1);

我以为你用Texture.Width / 2Height / 2 计算原点?

【问题讨论】:

  • 您能否准确解释正在发生的事情,您不希望发生的事情?
  • Oups 抱歉,完全忘记了 ;) 纹理从正常位置和上方 25 像素处绘制 ca 25 像素(顺便说一下,这是 Texture.Width/2)... @Nahuel I .
  • “不起作用”是什么意思?您是否尝试过 Vector.Zero 作为原点?
  • 那是计算原点的正确方法,你说它不起作用是什么意思?
  • 我想围绕中心旋转它@Pierre-Luc Pineault 它并不是真的不起作用,但它的工作方式错误:而不是围绕纹理中间旋转精灵,它正在将纹理本身绘制半个瓷砖(50x50),太左太高了。那里它旋转正确,但为什么不将纹理绘制到正确的位置??

标签: c# xna rotation


【解决方案1】:

使用原点时,与不使用中心原点相比,您在游戏中看到的位置会略高且偏左,因为您在旋转时会从位置中减去原点。

尝试将您的原点存储在 Vector2 中,并在您绘制对象时将其添加到您的位置。

Vector2 Origin = Vector2(Texture.Width/2, Texture.Height/2);
spriteBatch.Draw(Texture, Position + Origin, null, Color.White, Rotation, Origin, 1, SpriteEffects.None,  1);

【讨论】:

    猜你喜欢
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多