2D векторные углы XNA - что состоит в том, чтобы вычислить корректный путь?

что находится в XNA в 2D стандартный путь векторная угловая работа?

Право точек на 0 градусов, 90 подчеркивает, 180 оставленных, 270 вниз?

Из чего 'стандартные' реализации

float VectortoAngle(Vector2 vec)

и

Vector2 AngleToVector(float angle)

так, чтобы VectortoAngle (AngleToVector (PI)) == PI?

12
задан Led 16 February 2010 в 22:25
поделиться

2 ответа

Чтобы ответить на ваш первый вопрос, 0 градусов указывает вверх, 90 градусов вправо, 180 градусов вниз и 270 градусов влево. Здесь - это простое руководство по ротации 2D XNA, содержащее дополнительную информацию.

Что касается преобразования векторов в углы и обратно, я нашел пару хороших реализаций здесь :

Vector2 AngleToVector(float angle)
{
    return new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle));
}

float VectorToAngle(Vector2 vector)
{
    return (float)Math.Atan2(vector.Y, vector.X);
}

Кроме того, если вы новичок в 2D-программировании, вы можете изучить Torque X 2D , который предоставляет вам многое из этого. Если вы заплатили за разработку для XNA, вы получаете двоичные файлы движка бесплатно, и есть служебный класс, который преобразует углы в векторы и обратно, а также другие полезные функции, подобные этой.

Изменить: Как Раньери указал в комментариях, эта функция не имеет смысла, когда вверх на 0 градусов. Вот один из них (вверх - (0, -1), вправо - (1, 0), внизу - (0, 1), слева - (-1, 0)):

Vector2 AngleToVector(float angle)
{
    return new Vector2((float)Math.Sin(angle), -(float)Math.Cos(angle));
}

float VectorToAngle(Vector2 vector)
{
    return (float)Math.Atan2(vector.X, -vector.Y);
}

Я также хотел бы отметить, что я какое-то время я использовал Torque, и он использует 0 градусов для верха, так что я получил эту часть. Вверх, что в данном случае означает рисование текстуры на экране таким же образом, как и в файле. Итак вниз будет рисовать текстуру вверх ногами.

21
ответ дан 2 December 2019 в 07:02
поделиться

Не существует соглашения о том, какое направление представляет определенный угол в XNA, поэтому вы можете просто определить его, как вам нравится.

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

1
ответ дан 2 December 2019 в 07:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: