Используйте 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

Другие вопросы по тегам