Используйте float с моногамой sourceRectangle - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь использовать шкалу с моногамой, и для этого я тоже изменяю 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 ]

0 голосов
/ 29 мая 2018

Мне кажется, что у вас кастинг не в том месте.Шкала округляется до нуля, а затем умножается.

Попробуйте вместо этого:

sourceRectangle.Width = (int)((texture.Width / cols) * this.scale.X);
sourceRectangle.Height = (int)((texture.Height / rows) * this.scale.Y);
0 голосов
/ 28 мая 2018

Я действительно не знаю, какой у вас тип sourceRectangle, но я думаю, что Microsoft.Xna.Framework.Rectangle использует Int32 для своих членов. Источник

Если выЕсли вы хотите иметь 0.5f для текстуры, вы можете масштабировать текстуру на 2, и тогда вам не нужно получать «половинные» значения.Но кроме этого, нет никаких реальных опций без изменения SpriteBatch.

. Вы можете скомпилировать MonoGame для себя и написать себе структуру floaty- Rectangle, которую можно передать SpriteBatch, и выособенно может изменить этот метод, потому что он все равно использует float: Draw в SpriteBatch

...