【问题标题】:XNA sprite transormationXNA 精灵变换
【发布时间】:2013-06-01 12:43:07
【问题描述】:

有人知道如何在没有SpriteBatch.Draw() 方法的机会的情况下对精灵应用转换吗?

(来自 cmets 的更新) 这就是我需要的:我有一个圆形精灵。这张照片包含阴影。我需要拉伸这个圆(制作椭圆)并旋转它,但我希望阴影不会将其位置变为椭圆。旋转和缩放每帧都会改变。我认为矩阵变换是可能的

【问题讨论】:

  • 你的问题没有意义。你能试着改写一下吗?你想达到什么目的?
  • 我需要:首先旋转精灵然后缩放它。方法 SpriteBatch.Draw() 首先缩放精灵然后旋转它。

标签: xna


【解决方案1】:

传入SpriteBatch.Begin 的矩阵最后应用。使用这是通过 SpriteBatch 进行旋转操作后实现缩放操作的唯一方法(假设您的比例不均匀)。

缺点是,如果每个精灵的比例不同,你将不得不为每个精灵开始一个新的批次。

您的另一个选择是编写自己的精灵批处理器 - 但这似乎有点激烈。

【讨论】:

    【解决方案2】:

    谢谢!我找到了解决方案,但是速度很慢=(

    this.displayMatrix = 
                    Matrix.CreateTranslation(-(new Vector3(Position, 0))) * 
                    Matrix.CreateRotationZ(1) *
                    Matrix.CreateScale(new Vector3(new Vector2(1f, 2f), 1)) *
                    Matrix.CreateTranslation((new Vector3(Position, 0)));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      相关资源
      最近更新 更多