gpt4 book ai didi

c#-4.0 - XNA SpriteBatches-使它们绘制偏移?

转载 作者:行者123 更新时间:2023-12-03 07:49:13 27 4
gpt4 key购买 nike

有什么好的方法可以建议吗?

我希望能够在 XNA 中绘制大量 2D 物体——通常是在偏移位置。例如,如果某物位于 (X,Y) 位置,那么理想情况下,我希望能够向其传递一个修改后的 SpriteBatch,当调用 Draw(X,Y) 时,它会考虑偏移量并在 (X +偏移X、Y+偏移Y)。

我不想将此偏移量传递给子级,并且必须在每个子级中单独处理它 - 这可能会搞砸,也会搞砸我的界面!

首先,我想到了一个 SpriteBatch 的装饰器,如果我为位置 (X,Y) 的某些东西调用 Decorator.Draw ,则会将其路由到原始的 SpriteBatch 作为 (X+offsetX, y+offsetY)。但是我无法重写 SpriteBatch 类中的 Draw 方法,即使我创建了自己的“Decorator.DrawOffset”,装饰器似乎也需要调用“SpriteBatch.Begin()”以及似乎会破坏的东西...... :(

然后我想到了扩展方法,但我认为每次调用 draw() 时他们都需要将偏移量作为变量传递给它们?这仍然需要我将偏移量传递给子级......

另一种选择是将子项绘制到 RenderTarget(或 XNA4 中的任何内容),然后以偏移位置将其渲染到屏幕上...但这似乎效率低得可怕?

感谢您的评论!

最佳答案

您应该使用变换矩阵。

Matrix Transform = Matrix.CreateTranslation(offsetX, offsetY, 0);

SpriteBatch.Begin(...,...,...., Transform);

关于c#-4.0 - XNA SpriteBatches-使它们绘制偏移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7168392/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com