将 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
其成员使用 Int32
。Source
如果你想要 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);
我尝试将比例与 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
其成员使用 Int32
。Source
如果你想要 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);