将 float 与 sourceRectangle monogame 一起使用

Use float with sourceRectangle monogame

我尝试将比例与 monogame 一起使用,为此我也修改了 hitbox 的 sourceRectangle 但是当我试图为比例分配 0.5 时 sourceRectangle.Width 和高度 = 0

因为我的计算是

sourceRectangle.Width = (texture.Width / cols) * (int)this.scale.X
sourceRectangle.Height = (texture.Height / rows) * (int)this.scale.Y

感谢您的帮助

我真的不知道你的 sourceRectangle 是什么类型,但我猜它的 Microsoft.Xna.Framework.Rectangle 其成员使用 Int32Source

如果你想要 0.5f 的纹理,你可以将纹理缩放 2,然后你不必获得任何 "half" 值。但除此之外,不修改 SpriteBatch.

就没有真正的选项

您可以自己编译 MonoGame 并自己编写一个 floaty-Rectangle 结构,可以将其提供给 SpriteBatch 并且您可以特别修改此方法,因为它无论如何都使用 float:Draw in SpriteBatch

在我看来,您的铸件位置不对。比例在乘以之前四舍五入为零。

试试这个:

sourceRectangle.Width = (int)((texture.Width / cols) * this.scale.X);
sourceRectangle.Height = (int)((texture.Height / rows) * this.scale.Y);