что находится в XNA в 2D стандартный путь векторная угловая работа?
Право точек на 0 градусов, 90 подчеркивает, 180 оставленных, 270 вниз?
Из чего 'стандартные' реализации
float VectortoAngle(Vector2 vec)
и
Vector2 AngleToVector(float angle)
так, чтобы VectortoAngle (AngleToVector (PI)) == PI?
Чтобы ответить на ваш первый вопрос, 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 градусов для верха, так что я получил эту часть. Вверх, что в данном случае означает рисование текстуры на экране таким же образом, как и в файле. Итак вниз будет рисовать текстуру вверх ногами.
Не существует соглашения о том, какое направление представляет определенный угол в XNA, поэтому вы можете просто определить его, как вам нравится.
Я не уверен, когда в последний раз я использовал углы в игре. Практически в каждом случае проще работать напрямую с векторами, хотя для начала это немного менее интуитивно.