我尝试使用带有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
感谢您的帮助
答案 0 :(得分:0)
我真的不知道您的sourceRectangle
的类型是什么,但我猜其Microsoft.Xna.Framework.Rectangle
为其成员使用Int32
。Source
如果您希望纹理具有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);