2015-08-11 3 views
0

Я хочу использовать свою собственную систему «Система». Что-то вроде 1 пикселя равно 0,01 единиц.MonoGame - Unit Convertion

Теперь, когда я хочу что-то нарисовать с помощью своей собственной Unitsystem, мне всегда приходится умножать/делить значение на 100. Я нашел ответы на несколько вопросов, которые упомянули использовать матрицу в SpriteBatch.Begin, но я не знаю, как ,

Может ли кто-нибудь помочь мне ^^?

ответ

1

Последний параметр Spritebatch.Begin() может быть матрицей преобразования.

TransformMatrix = Matrix.CreateScale(0.01); 
spriteBatch.Begin(SpriteSortMode.Immediate, null, null, null, null, null, TransformMatrix); 
+0

Спасибо, но когда я пытаюсь использовать матрицу преобразования, также влияет размер моих текстур. Текстура 100 * 100 будет масштабирована до размера 1 * 1 – Djeurissen

+0

OK, если вы хотите изменить координаты, вы можете запустить TransformMatrix на своих векторах. Но я не понимаю, что вы получаете от этого, чего вы пытаетесь достичь? –

+0

Я хочу использовать Farseer Physics в своем проекте. А в FarseerPhysics 1 пиксель равен 0,01 единицам. Exampleproject использует класс ConvertUnit для преобразования между SimulationUnits и DisplayUnits. Я также нашел ответ на эту проблему, но я не понимаю, как я должен использовать BasicEffect или ViewMatrix для решения моей проблемы ... http://stackoverflow.com/questions/7733088/farseer-meter-pixel- соотношение – Djeurissen

0

Farseer Physics предоставляет класс ConvertUnits для такого рода вещей. Из памяти интересующие вас методы: ToSimUnits и ToDisplayUnits. Farseer documentation описывает это следующим образом:

// 1 meter = 64 pixels 
ConvertUnits.SetDisplayUnitToSimUnitRatio(64f); 

// If you object is 512 pixels wide and 128 pixels high: 
float width = ConvertUnits.ToSimUnits(512f) // 8 meters 
float height = ConvertUnits.ToSimUnits(128f) // 2 meters 

Так правила:

  1. Всякий раз, когда вам нужно ввести пикселей в двигатель, вы должны преобразовать число в метрах первым.
  2. Всякий раз, когда вы берете значение с движка и рисуете его на экране, вам нужно сначала преобразовать его в пиксели.

Если вы следуете этим простым правилам, у вас будет устойчивое физическое моделирование.

По смежной теме вы должны изучить resolution independence.