Четверг, 26 Декабря 2024, 06:24

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Определение координат и углов 2D объектов
novozarДата: Четверг, 19 Января 2017, 11:40 | Сообщение # 1
уже был
Сейчас нет на сайте
Пожалуйста подскажите как в Unity 2D находить углы, и координаты.
1. Известен угол объекта, расстояние до следующей точки. Как определить координаты следующей точки?
2. Известно координаты объекта 1 и объекта 2. Как найти угол между ними?
3. В объекте есть дочерний объект. Как определить глобальные координаты дочернего объекта.
Я раньше работал с ActionScript там всё это находилось через тангенсы-артангенсы, тут всё на векторах построено, для меня это сложно.
Если не сложно покажите пример кода.
Спасибо.


Сообщение отредактировал novozar - Четверг, 19 Января 2017, 11:41
QstДата: Вторник, 24 Января 2017, 16:35 | Сообщение # 2
был не раз
Сейчас нет на сайте
1) угол я так понимаю типа направление? тогда направление.normalize()*расстояние
2) http://ru.onlinemschool.com/math/library/vector/angl/
3) дочерний объект.transform.position

но вектора всё-таки подучи, без них в гд никак.
MysticPurpleДата: Вторник, 24 Января 2017, 16:47 | Сообщение # 3
почетный гость
Сейчас нет на сайте
1. Если угол - это вектор, то как сказал Qst, а если - число, то с помощью магии тригонометрии:
x2 = x1 + cos(угол)*расстояние
y2 = y1 + sin(угол)*расстояние

(x2, y2 - координаты следующей точки, x1, y1 - координаты объекта)

2. Есть такая штука - скалярное произведение векторов (по английски "dot product"). По определению, оно равно длина_1_вектора * длина_2_вектора * cos(угол_между_векторами). Отсюда можно найти косинус угла между векторами:
cos(угла_между_векторами) = Vector3.Dot(vector1, vector2) / (vector1.magniture * vector2.magnitude) или
cos(угла_между_векторами) = Vector3.Dot(vector1.normalized, vector2.normalized)
(normalized делает из вектора другой вектор, который показывает "туда же", но его длина равна 1)

3. transform.position - глобальные координаты объекта, transform.localPosition - локальные

Добавлено (24 января 2017, 16:47)
---------------------------------------------
Кстати, по векторам советую отличнейшую статью: https://habrahabr.ru/post/131931/

Сообщение отредактировал MysticPurple - Вторник, 24 Января 2017, 16:45
RangerДата: Вторник, 24 Января 2017, 17:13 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
Цитата novozar ()
2. Известно координаты объекта 1 и объекта 2. Как найти угол между ними?

нельзя найти угол между объектами только на основании их координат.
Необходим анкор.

Цитата MysticPurple ()
cos(угла_между_векторами) = Vector3.Dot(vector1.normalized, vector2.normalized)

это в случае, если якорь на координатах 0,0


  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг