使用带有sourceRectangle monogame的float

时间:2018-05-28 13:28:56

标签: c# monogame

我尝试使用带有monogame的比例,为此我也为hitbox修改了sourceRectangle,但是当我尝试为比例分配0.5时,sourceRectangle.Width和Height = 0

因为我的计算是

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

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

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

如果您希望纹理具有0.5f,则可以将纹理缩放2,然后您不必获得任何“半”值。但除此之外,如果不修改SpriteBatch,就没有真正的选择。

您可以自己编译MonoGame并为自己编写一个可以提供给Rectangle的浮点数SpriteBatch结构,您可以特别修改此方法,因为它仍然使用float:{{3} }

答案 1 :(得分:0)

在我看来,你已经把你的铸造放在了错误的地方。在它成倍增加之前,比例将向下舍入为零。

请改为尝试:

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