Суббота, 20 Апреля 2024, 00:35

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Неработающий код
Неработающий код
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)
---------------------------------------------
Теперь ещё и анимация перестала работать хотя я ничего не трогал mellow

Добавлено (15.07.2012, 22:54)
---------------------------------------------
Ну что некто не знает? dry

ЛевшаДата: Понедельник, 16 Июля 2012, 14:40 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
Как то странно построена логика...
Может напишешь что ты пытаешься сделать, тогда помогут наверняка.
Народ просто тупо не понимает. smile


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) smile

Короче вращай кватернионом, а следующей строкой обнуляй ненужные оси через эулер.
Меня както такая уловка сильно выручила. smile

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'
wacko ПОЧЕМУ????!!!! wacko

Добавлено (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мб ...Будет кто качать? happy
seamanДата: Вторник, 17 Июля 2012, 15:48 | Сообщение # 13
старожил
Сейчас нет на сайте
Поставь в пустую сцену два кубика, свяжи их как скелет. Набрось на них соответствующие скрипты. Выложи этот проект.
sinoptisДата: Вторник, 17 Июля 2012, 17:45 | Сообщение # 14
почетный гость
Сейчас нет на сайте
Всем спасибо smile ... Решил проблему сам. Просто переписал Third Person Controller под свои нужды biggrin . Осталось лишь исправить поворот ног по оси Х (должно быть -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 работало, наверно что то изменили... sad


X.cor.R (Prologue)
seamanДата: Среда, 18 Июля 2012, 08:03 | Сообщение # 16
старожил
Сейчас нет на сайте
В 3.5.3 работает.
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Неработающий код
  • Страница 1 из 1
  • 1
Поиск:

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