Неработающий код
|
|
sinoptis | Дата: Воскресенье, 15 Июля 2012, 22:54 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Данный ниже код прекрасно работал до обновления Unity. Но почему сейчас Unity выдает ошибку: error CS0426: The nested type `Euler' does not exist in the type `UnityEngine.Quaternion'?
Вот код: Code //направление на игрока Vector3 direction = transform.position - target.position; //запоминаем старые углы Vector3 oldRotate = transform.eulerAngles; //вычисляем новые углы Quaternion newRotate = Quaternion.LookRotation(direction,Vector3.up); transform.rotation = Quaternion.Euler(oldRotate.x,newRotate.eulerAngles.y ,newRotate.eulerAngles.z); Добавлено (14.07.2012, 14:46) --------------------------------------------- Теперь ещё и анимация перестала работать хотя я ничего не трогал Добавлено (15.07.2012, 22:54) --------------------------------------------- Ну что некто не знает?
|
|
| |
Левша | Дата: Понедельник, 16 Июля 2012, 14:40 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| Как то странно построена логика... Может напишешь что ты пытаешься сделать, тогда помогут наверняка. Народ просто тупо не понимает.
X.cor.R (Prologue)
|
|
| |
sinoptis | Дата: Понедельник, 16 Июля 2012, 14:52 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| В общем есть GameObject(робот) к нему удочерены два обьекта голова и ноги, голова свободно поворачивается за мышкой а при нажатии W мне нужно повернуть ноги туда же куда смотрит голова только по одной оси
|
|
| |
reyzor | Дата: Понедельник, 16 Июля 2012, 15:37 | Сообщение # 4 |
Проггер в законе
Сейчас нет на сайте
| sinoptis, так попробуй так. конечно мог немного код напутать - писал сдесь(на форуме) и по памяти, но думаю логику поймёшь.
Code public body Transform; public head Transform; if(isKeyDown(Key.W)) { body.transform.rotation.y = head.transform.rotation.y; }
Юзаю Unity3d +C# Мой твиттер Помог - ставь +, Ответил на вопрос - ставь +.
|
|
| |
sinoptis | Дата: Понедельник, 16 Июля 2012, 15:49 | Сообщение # 5 |
почетный гость
Сейчас нет на сайте
| reyzor, Спасибо конечно. Я так пробовал, но такой способ не подходит в моем случае).
|
|
| |
Левша | Дата: Понедельник, 16 Июля 2012, 20:03 | Сообщение # 6 |
почти ветеран
Сейчас нет на сайте
| Через ротатион нельзя, надо через Эулер или кватернион. Но, смешивать в кашу эти методы тоже нельзя... как тут: Code Quaternion.Euler(oldRotate.x,newRotate.eulerAngles.y ,newRotate.eulerAngles.z); Или одно или другое.
X.cor.R (Prologue)
|
|
| |
seaman | Дата: Понедельник, 16 Июля 2012, 21:33 | Сообщение # 7 |
старожил
Сейчас нет на сайте
| Ну у него вроде не смешано. Делает кватернион по углам. (oldRotate.x - тоже угол!) Конечно при этом могут быть глюки при некоторых поворотах - просто из свойств углов Эйлера, но прямого криминала не вижу. Почему выдает ошибку непонятно. У Вас не 4.0 случаем? Но вообще я бы сделал подобно тому, что reyzor говорил: Code transform.rotation = Quaternion.Euler(transform.eulerAngles.x, Head.transform.eulerAngles.y, transform.eulerAngles.z); У меня так и сделано, только вместо Head - Camera
Сообщение отредактировал seaman - Понедельник, 16 Июля 2012, 21:34 |
|
| |
sinoptis | Дата: Понедельник, 16 Июля 2012, 23:58 | Сообщение # 8 |
почетный гость
Сейчас нет на сайте
| seaman, У меня 3.5 . Да я уже разобрался(сделал как вы написали). Это из-за анимации у меня не получалось, обьект на самом деле крутился, а вот сама моделька на месте оставалась и проигровала анимацию. Добавлено (16.07.2012, 23:58) --------------------------------------------- Ан нет ..Блин может я скину проект посмотрите что не так?
|
|
| |
Левша | Дата: Вторник, 17 Июля 2012, 00:56 | Сообщение # 9 |
почти ветеран
Сейчас нет на сайте
| Quote (seaman) Ну у него вроде не смешано. Quote (seaman) но прямого криминала не вижу. Согласен, не так понял код (ассоциация со словом Rotate)
Короче вращай кватернионом, а следующей строкой обнуляй ненужные оси через эулер. Меня както такая уловка сильно выручила.
Code enmKorpus.rotation = Quaternion.Slerp (enmKorpus.rotation, Quaternion.LookRotation(kursDirection), rotSpeed * Time.deltaTime); enmKorpus.localRotation = Quaternion.Euler(Vector3 (0, enmKorpus.localEulerAngles.y, 0));
X.cor.R (Prologue)
Сообщение отредактировал Левша - Вторник, 17 Июля 2012, 01:02 |
|
| |
sinoptis | Дата: Вторник, 17 Июля 2012, 12:25 | Сообщение # 10 |
почетный гость
Сейчас нет на сайте
| error CS0426: The nested type `Euler' does not exist in the type `UnityEngine.Quaternion' ПОЧЕМУ????!!!! Добавлено (17.07.2012, 12:13) --------------------------------------------- Я даже пробовал предпоследнюю Unity ставить всё равно также... Добавлено (17.07.2012, 12:25) --------------------------------------------- Сейчас попробовал Third Person Controller вроде работает, но когда я поварачиваюсь он дёргается, как исправить?
|
|
| |
seaman | Дата: Вторник, 17 Июля 2012, 12:57 | Сообщение # 11 |
старожил
Сейчас нет на сайте
| Ну остается только проект выложить.
|
|
| |
sinoptis | Дата: Вторник, 17 Июля 2012, 13:27 | Сообщение # 12 |
почетный гость
Сейчас нет на сайте
| 75мб ...Будет кто качать?
|
|
| |
seaman | Дата: Вторник, 17 Июля 2012, 15:48 | Сообщение # 13 |
старожил
Сейчас нет на сайте
| Поставь в пустую сцену два кубика, свяжи их как скелет. Набрось на них соответствующие скрипты. Выложи этот проект.
|
|
| |
sinoptis | Дата: Вторник, 17 Июля 2012, 17:45 | Сообщение # 14 |
почетный гость
Сейчас нет на сайте
| Всем спасибо ... Решил проблему сам. Просто переписал Third Person Controller под свои нужды . Осталось лишь исправить поворот ног по оси Х (должно быть -90). Добавлено (17.07.2012, 17:45) --------------------------------------------- Вот в этой строчке происходит поворот на MoveDeriction Code foots.transform.rotation = Quaternion.LookRotation(moveDirection); Как сделать чтобы поворот по х не изменялся у ног?
|
|
| |
Левша | Дата: Вторник, 17 Июля 2012, 20:10 | Сообщение # 15 |
почти ветеран
Сейчас нет на сайте
| Quote error CS0426: The nested type `Euler' does not exist in the type `UnityEngine.Quaternion' wacko ПОЧЕМУ????!!!! wacko Не знаю.. в 3.4.2 работало, наверно что то изменили...
X.cor.R (Prologue)
|
|
| |
seaman | Дата: Среда, 18 Июля 2012, 08:03 | Сообщение # 16 |
старожил
Сейчас нет на сайте
| В 3.5.3 работает.
|
|
| |