XNA — инструмент, помогающий определить положение экрана

В настоящее время я работаю над ролевой игрой с использованием XNA Framework.

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

Пример кода ниже показывает, как я обрабатываю текст «Разговор»

titleString = Fonts.SplitTextIntoLines(Conversation.CurrentNode.Text, Fonts.Font, new Vector2(maxWidth, 0));
titlePosition.X = (viewport.Width - Fonts.Font.MeasureString(titleString).X) / 2;
titlePosition.Y = backgroundPosition.Y + 200f;

Fonts.SplitTextIntoLines разбивает ввод на несколько строк в зависимости от используемого шрифта и указанной максимальной ширины, это не имеет отношения к моему вопросу.

titlePosition.X: здесь я центрирую текст на экране

titlePosition.Y: Это строка, которая меня беспокоит

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

Если кто-нибудь знает о таком инструменте, не могли бы вы сообщить мне? :)

Вот скриншот, который лучше иллюстрирует мой вопрос http://img836.imageshack.us/img836/1929/i86g.png


person James Robert Pattison    schedule 09.07.2013    source источник
comment
Как насчет того, чтобы перестать гадать и позволить компьютеру делать вычисления? Конечно, вы можете определить прямоугольник, в котором может отображаться ваш текст, а затем использовать SpriteFont.MeasureString(string), чтобы найти длину полученного текста в пикселях. Тогда это всего пара строк, автоматизирующих это для каждой строки текста, возможно, даже автоматический перенос слов, и вам больше никогда не нужно делать это вручную. stackoverflow.com/ вопросы/10263734/ и stackoverflow .com/questions/15986473/   -  person user1306322    schedule 09.07.2013
comment
Я не говорю о x-ширине, я использовал MeasureString для переноса текста; Кроме того, мой вопрос не ограничивается только текстом, он касается общего положения чего-либо...   -  person James Robert Pattison    schedule 11.07.2013


Ответы (1)


Простым ответом будет реализация очень простого инструмента, помогающего позиционировать объекты в сцене. В большинстве игровых движков для этого есть редактор, но поскольку XNA — это всего лишь фреймворк, вы можете реализовать очень простую систему с клавиатурой и стрелкой для перемещения текста и вывода на экран положения X и Y. Это не идеально, но должно сэкономить вам время.

Также:

Vector2 mousePosition = new Vector2(Mouse.GetState().X,Mouse.GetState().Y);

Console.WriteLine("My Cursor is at: " + mousePosition);

Не забывайте об члене класса IsMouseVisible, чтобы видеть курсор мыши.

Надеюсь, поможет!

person Michael Dubé    schedule 10.07.2013
comment
Спасибо, чувак, я не думал об этом :) - person James Robert Pattison; 11.07.2013