Пятница, 29 Ноября 2024, 05:35

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Повернуть модель к модели
shizofrenДата: Четверг, 05 Сентября 2013, 21:33 | Сообщение # 1
Starting MS-DOS...
Сейчас нет на сайте
Привет всем, хочу узнать, как можно один объект повернуть к второму?

Моя команда
seamanДата: Четверг, 05 Сентября 2013, 21:55 | Сообщение # 2
старожил
Сейчас нет на сайте
LookAt
shizofrenДата: Четверг, 05 Сентября 2013, 21:56 | Сообщение # 3
Starting MS-DOS...
Сейчас нет на сайте
Цитата (seaman)
LookAt

Модель ведет себя очень странно.


Моя команда
romgermanДата: Четверг, 05 Сентября 2013, 22:15 | Сообщение # 4
старожил
Сейчас нет на сайте
shizofren, можно высчитывать кватернионы и поворачивать модель rotate'ом или как-то так.
ЛевшаДата: Пятница, 06 Сентября 2013, 00:38 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
Цитата (shizofren)
Модель ведет себя очень странно.

И как это понять ? confused


X.cor.R (Prologue)
lentinantДата: Пятница, 06 Сентября 2013, 03:13 | Сообщение # 6
ленивый программист
Сейчас нет на сайте
Код
transform.rotation = Quaternion.LookRotation(target.transform.position - transform.position)

Код помещаем в класс, применяемый к первому объекту (который поворачиваем), target - переменная класса GameObject, которой присвоен второй объект (к которому поворачиваем).


Когда-то тут будут ссылки на крутые проекты. Или нет.

Сообщение отредактировал lentinant - Пятница, 06 Сентября 2013, 03:14
shizofrenДата: Пятница, 06 Сентября 2013, 12:08 | Сообщение # 7
Starting MS-DOS...
Сейчас нет на сайте
Цитата (Левша)
И как это понять ? confused

У нее как бы смещается центр, поворачивается она не относительно своего центра, а относительно какой-то левой точки. И еще пытается взлететь вверх.

Добавлено (06.09.2013, 12:08)
---------------------------------------------

Цитата (lentinant)
Код помещаем в класс, применяемый к первому объекту (который поворачиваем), target - переменная класса GameObject, которой присвоен второй объект (к которому поворачиваем).

А как этот код будет работать вместе с этим кодом:
Код
humanModel.transform.Translate(Vector3.Normalize(meshPos-targetPos)*Time.deltaTime*walkSpeed);


Моя команда

Сообщение отредактировал shizofren - Пятница, 06 Сентября 2013, 11:53
lentinantДата: Пятница, 06 Сентября 2013, 18:39 | Сообщение # 8
ленивый программист
Сейчас нет на сайте
shizofren, нормально будет работать. У меня в классе врага
Код
transform.rotation = Quaternion.LookRotation(target.transform.position - transform.position);
transform.Translate(transform.InverseTransformDirection(transform.forward * Time.deltaTime * Velocity));

У меня модель двигается туда, куда повернута, а у тебя - в сторону врага. С учетом первой строчки, разницы практически нет, так как модель всегда повернута к врагу.


Когда-то тут будут ссылки на крутые проекты. Или нет.

Сообщение отредактировал lentinant - Пятница, 06 Сентября 2013, 18:41
shizofrenДата: Суббота, 07 Сентября 2013, 10:46 | Сообщение # 9
Starting MS-DOS...
Сейчас нет на сайте
Цитата (lentinant)
transform.rotation = Quaternion.LookRotation(target.transform.position - transform.position)

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


Моя команда
seamanДата: Суббота, 07 Сентября 2013, 11:56 | Сообщение # 10
старожил
Сейчас нет на сайте
Цитата
У нее как бы смещается центр, поворачивается она не относительно своего центра, а относительно какой-то левой точки.

Значит пивот модели не в центре. Проще всего удочерить ее пустому gameObject, который предварительно разместить в центре модели. И вращать его.
TheAceДата: Суббота, 07 Сентября 2013, 12:05 | Сообщение # 11
Pain is Pleasure
Сейчас нет на сайте
Земля к земле, пепел к пеплу, прах к праху, модель к модели...

The End [3D][TPS]
shizofrenДата: Суббота, 07 Сентября 2013, 13:15 | Сообщение # 12
Starting MS-DOS...
Сейчас нет на сайте
Цитата (seaman)

Значит пивот модели не в центре. Проще всего удочерить ее пустому gameObject, который предварительно разместить в центре модели. И вращать его.

Тоже так думал сначала, но пивиот модели в центре. Проблема решилась, использую такой код:

Код

humanModel.transform.LookAt(targetPos); //Поворачиваем модель к цели
meshRot = humanModel.transform.rotation.eulerAngles;
humanModel.transform.rotation = Quaternion.Euler(new Vector3(0,meshRot.y,0)); //Делаем вращение модели только по у-координате

pathCovered = (Time.time-startTime)*walkSpeed; //Считаем пройденое время
pathRes = pathCovered / pathLenght; //Получаем текущую скорость передвижения
humanModel.transform.position = Vector3.Lerp(meshPos,targetPos,pathRes); //Двигаем модель к цели с высчитанной скоростью


Моя команда

Сообщение отредактировал shizofren - Суббота, 07 Сентября 2013, 13:16
lentinantДата: Суббота, 07 Сентября 2013, 15:22 | Сообщение # 13
ленивый программист
Сейчас нет на сайте
shizofren, даже не знаю. Почему-то, у меня указанная строчка нормально работает, и все правильно крутится. Делал вышеуказанным методом - объекты раскидал по пустим GO.

Когда-то тут будут ссылки на крутые проекты. Или нет.
  • Страница 1 из 1
  • 1
Поиск:

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