localRotation[РЕШЕНО]

Общие вопросы о Unity3D

localRotation[РЕШЕНО]

Сообщение pod4444 20 июн 2012, 15:08

Есть значит танчик, у него есть корпус и дочерняя ему башня.
Крутить башню нельзя через мировой rotation, иначе все наклоны корпуса никак не отразятся на башне.
Но как рассчитать направление для локалротэйшн? нужно перевести точку в которую мы смотрим в локал координаты башни? как это сделать?

обычный разворот для мировых координат я делал так:

Синтаксис:
Используется csharp

Vector3 dir = new Vector3(target.x, transform.position.y, target.z) - transform.position;
float angleToTarget = Vector3.Angle(dir, transform.forward);
if (Mathf.Abs(angleToTarget) > 1)
    transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.LookRotation(dir.normalized), rotationSpeed* Time.deltaTime);

 
Последний раз редактировалось pod4444 20 июн 2012, 15:55, всего редактировалось 1 раз.
Аватара пользователя
pod4444
Старожил
 
Сообщения: 721
Зарегистрирован: 20 янв 2012, 22:02
Откуда: Воронеж
Skype: pod4444
  • Сайт

Re: localRotation

Сообщение Syberex 20 июн 2012, 15:20

Используй функции InverseTransformPoint и InverseTransformDirection у transform башни.
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: localRotation[РЕШЕНО]

Сообщение pod4444 20 июн 2012, 15:56

решил так:

Синтаксис:
Используется csharp
            dir = new Vector3(target.x, transform.position.y, target.z) - transform.position;
            angleToTarget = Vector3.Angle(dir, transform.forward);
            if (angleToTarget > 0.5)
            transform.RotateAround(transform.position, transform.up, -Vector3.Cross(dir, transform.forward).normalized.y * Time.deltaTime*rotationSpeed);
 
Аватара пользователя
pod4444
Старожил
 
Сообщения: 721
Зарегистрирован: 20 янв 2012, 22:02
Откуда: Воронеж
Skype: pod4444
  • Сайт


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13