Используйте float с моногамой sourceRectangle
Я пытаюсь использовать шкалу с моногамом, и для этого я тоже изменяю sourceRectangle для hitbox, но когда я пытаюсь назначить 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 ответа
Мне кажется, что у тебя кастинг не в том месте. Шкала округляется до нуля, а затем умножается.
Попробуйте это вместо этого:
sourceRectangle.Width = (int)((texture.Width / cols) * this.scale.X);
sourceRectangle.Height = (int)((texture.Height / rows) * this.scale.Y);
Я действительно не знаю, какой у тебя тип sourceRectangle
есть, но я думаю, его Microsoft.Xna.Framework.Rectangle
который использует Int32
для своих членов. Источник
Если вы хотите иметь 0.5f
для текстуры вы можете масштабировать текстуру на 2, и тогда вам не нужно получать какие-либо "половинные" значения. Но кроме этого, нет реальных вариантов без изменения SpriteBatch
,
Вы можете собрать MonoGame для себя и написать себеRectangle
структура, которая может быть дана SpriteBatch
и вы можете особенно изменить этот метод, потому что он все равно использует float: Draw в SpriteBatch