Допоможіть розібратися з командами пов'язаними з Transform. а точніше в маніпуляції об'єктом в плані положення і кута. А то здається я заплутався
Якщо з позицією більш-менш зрозуміло, то з кутами взагалі каша (у мене в голові).
Застосовую всі до косм.кораблю.
Відкриваю мануал, шукаю все що пов'язано з Transform, виявляю:
Variables і Functions.
Своїми словами я назвав це все для себе так, мовляв в змінні можна забивати положення об'єкта, а в функції - тільки швидкість ..
Я пробував користуватися тим і тим. але вийшла плутанина, тобто я просто напросто заплутався. не в цьому суть.
я вирішив користуватися строго Variables (якщо це не реально поправте мене.), поки хоча б не розберуся в усьому чи що, ну і щоб все поступально було.
1. "position або localPosition" (якщо об'єкт не є дочірнім, то це одне і те ж?)
2. "eulerAngles або localEulerAngles" і "rotation або localRotation". У них я взагалі ні чого не розумію. У чому різниця для початок? Я звичайно навчився міняти кут ці: "transform.localRotation = Quaternion.Euler ();", але дуже хочеться розуміти що я роблю.
Я вже не кажу, що після "Quaternion." можна написати чортзна-що. І пишуть же адже (щоб змінювати кут, як альтернатива моєму способу) В цьому я теж розібратися хочу.
Можу просто попросити вас розповісти про способи зміни кута, і про їх різниці (в способах).
position - позиція об'єкта (x, y, z) в глобальних координатах, тобто отностительно початку координат в сцені
localPosition - позиція об'єкта (x, y, z) в локальних координатах, тобто щодо свого parent'a
eulerAngles - кути повороту об'єкта отностительно осей (x, y, z). тобто в компоненті x задано на скільки градусів об'єкт повернений навколо осі X. в Y навколо осі Y ну і відповідно в Z навколо осі Z. І це в глобальній системі координат
localEulerAngles - кути повороту так само як і в eulerAngles але щодо свого parent'a.
допустимо у нас така ієрархія:
якщо припустимо GameObjectParent eulerAngles = (45,0,0) - то він повернуть на 45 градусів навколо осі X (глобальної)
GameObjectChild localEulerAngles = (45,0,0) - то цей об'єкт повернуть на 45 градусів навколо осі X (щодо GameObjectParnet), а ось в глобальних координатах (eulerAngles) вже дорівнюватиме (90,0,0), тобто повернутий на 90 градусів вогруг осі X. (45 градусів предка + 45 градусів щодо предка)
Golandez писал (а): Вивести самому в Debug.Log два параметра і подивитися релігія не дозволяє?
Я повинен уточнити, тому як мої особисті висновки не завжди соответсятуют дійсності. Я ж написав, я повинен знати напевно.
Syberex писал (а): Ставлячи змінної нове значення (позицію або обертання), це значення просто замінює старе. І об'єкт переміщається в нову потрібну точку в просторі, або отримує нове обертання щодо кожної осі.
А методами Translate і Rotate ми продовжуємо як би розпочату раніше рух, задаючи не нове положення, а різницю між старим і новим положенням / поворотом.
Наприклад машина рухається зі швидкістю 10 м / с, рух за допомогою методу задати простіше:
transform. Translate # 40; Vector3. forward * 10 * Time. deltaTime # 41; ;
А за допомогою змінної position зручно задати нове точне положення (в глобальних координатах), наприклад повернемо машинку на старт, після того, як вона перекинулася
transform. position = Vector3. zero;
З поворотами також:
transform. Rotate # 40; Vector3. up * 30 * Time. deltaTime # 41; ; // повертаємо машинку, 30 градусів / с
transform. rotation = Quaternion. identity; // скидаємо повороти на старті
Все залежить не від методів і змінних, а від завдання і доступних даних.
На практиці звичайно складніше буде.
А ось з RotateAround і LookAt я ще сам не розібрався
Ось що я хотів почути!
А якщо мені необхідно міняти положення камери в залежності від параметрів будь-яких? там мені незручно використовувати Translate. Тому як у мене немає заздалегідь відомої швидкості (цієї камери), у мене є поточні параметри (наприклад такі як швидкість літака). Я звичайно міг побудувати залежність швидкості віддалення камери щодо швидкості літака. і навіть так і зробив, і все працювало як треба. але мені здається це все через. камера повішена на літак.