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