smooth rotate, как в ангриботсе...

Программирование на Юнити.

smooth rotate, как в ангриботсе...

Сообщение raul82 14 ноя 2011, 11:36

хочу реализовать поворот геймобъекта так же
как крутится персонаж в ангриботс..
там он поворачиваеца так
rigidbody.angularVelocity = (Vector3.up * rotationAngle * turningSmoothing);
как достич такого же эффекта без ригидбоди? X(

в интернетах по запросу "smooth rotate" тысячи вариантов, и ни одни не дает такого же эффекта...
5 годиков 7 месяцев
Аватара пользователя
raul82
Старожил
 
Сообщения: 506
Зарегистрирован: 21 янв 2011, 17:48
Откуда: Алматы

Re: smooth rotate, как в ангриботсе...

Сообщение DbIMok 14 ноя 2011, 12:33

правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: smooth rotate, как в ангриботсе...

Сообщение raul82 14 ноя 2011, 12:41

DbIMok писал(а):Quaternion.Slerp?

я не смог ее заставить так же плавно поворачивать объект. :(
так же не смог и с Mathf.SmoothDampAngle... :(
посему пока копаясь в исходника iTween'a, задал вопрос тут, может у кого уже есть готовый результат? :ymalien:

плавность поворота нужна чтоб объект не поворачивался с огромной скоростью, проскакивая через все коллайдеры... (colission detecion и DontGoThroughThings туфта)
5 годиков 7 месяцев
Аватара пользователя
raul82
Старожил
 
Сообщения: 506
Зарегистрирован: 21 янв 2011, 17:48
Откуда: Алматы

Re: smooth rotate, как в ангриботсе...

Сообщение DbIMok 14 ноя 2011, 12:55

raul82 писал(а):посему пока копаясь в исходника iTween'a

там все просто
Синтаксис:
Используется csharp
                //calculate:
                vector3s[3].x=Mathf.SmoothDampAngle(vector3s[0].x,vector3s[1].x,ref vector3s[2].x,time);
                vector3s[3].y=Mathf.SmoothDampAngle(vector3s[0].y,vector3s[1].y,ref vector3s[2].y,time);
                vector3s[3].z=Mathf.SmoothDampAngle(vector3s[0].z,vector3s[1].z,ref vector3s[2].z,time);
       
                //apply:
                if(isLocal){
                        target.transform.localEulerAngles=vector3s[3];
                }else{
                        target.transform.eulerAngles=vector3s[3];
                }
               
                //need physics?
                if(target.rigidbody != null){
                        Vector3 postUpdate=target.transform.eulerAngles;
                        target.transform.eulerAngles=preUpdate;
                        target.rigidbody.MoveRotation(Quaternion.Euler(postUpdate));
                }

raul82 писал(а):чтоб объект не поворачивался с огромной скоростью

ну а откуда она берется, огромная скорость? может лыжи не виноваты?
выкладывайте свой пример, код. а то "дайте" и все.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: smooth rotate, как в ангриботсе...

Сообщение raul82 14 ноя 2011, 14:14

я пытаюсь как то так сделать,но туплю жестко :(
фишка в том что водя по экрану монитора "мышем" получаем угол _Angle
на который надо повернуть платформу
результат ужасный...
Синтаксис:
Используется csharp
 
      if (Input.GetMouseButton(0))
        {
            // Look at and dampen the rotation
            rotation = Quaternion.LookRotation(cursorWorldPosition - transform.position);
            rotation.x = 0;
            rotation.y = 0;
            rotation.z = transform.rotation.z +_Angle;
            transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * turningSmoothing);
        }
 
5 годиков 7 месяцев
Аватара пользователя
raul82
Старожил
 
Сообщения: 506
Зарегистрирован: 21 янв 2011, 17:48
Откуда: Алматы

Re: smooth rotate, как в ангриботсе...

Сообщение DbIMok 14 ноя 2011, 15:00

raul82 писал(а):cursorWorldPosition

как получается?
raul82 писал(а):_Angle;

а это?
raul82 писал(а):rotation.x = 0;
            rotation.y = 0;
            rotation.z = transform.rotation.z +_Angle;

еще w забыли обнулить (шучу). вообще жесть конечно. срочно разбираться с кватернионами!
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: smooth rotate, как в ангриботсе... [РеШеНо]

Сообщение raul82 15 ноя 2011, 08:00

всем спасибо сделал так:
на угловой скорости ригидбоди( как у ангриботса)

Синтаксис:
Используется csharp
    void FixedUpdate()
    {
        if (Input.GetMouseButtonDown(0))
        {
            StartPoint_World = LastPoint_World = Global.MainCamera.ScreenToWorldPoint(Input.mousePosition);
        }

        CurrentPoint_World = Global.MainCamera.ScreenToWorldPoint(Input.mousePosition);
        if (Input.GetMouseButton(0))
        {
            // timeToChangeAngle - время в с екундах в течении которого замеряем угол поворота при нажатой кнопке
            timeToChangeAngle -= Time.deltaTime;
           
            if (timeToChangeAngle <= 0)
            {
               
                LastToCurrentAngle = Vector3.Angle(LastPoint_World, CurrentPoint_World);

                float res = LastPoint_World.x * CurrentPoint_World.y - CurrentPoint_World.x * LastPoint_World.y;
                if (res < 0)
                    LastToCurrentAngle = LastToCurrentAngle * (-1);

                LastPoint_World = CurrentPoint_World;
                timeToChangeAngle = speed;
            }

            if (LastToCurrentAngle >= -0.05 && LastToCurrentAngle <= 0.05)
            {
                rigidbody.angularVelocity = Vector3.zero;
                print("LastToCurrentAngle " + LastToCurrentAngle);
            }
            else
            {
                rigidbody.angularVelocity = (Vector3.forward * LastToCurrentAngle * turningSmoothing);
            }
           
        }
        else// кнопку отпустили
        {
            LastToCurrentAngle = 0;
            timeToChangeAngle = speed;
            rigidbody.angularVelocity = Vector3.zero;
        }
    }
 
5 годиков 7 месяцев
Аватара пользователя
raul82
Старожил
 
Сообщения: 506
Зарегистрирован: 21 янв 2011, 17:48
Откуда: Алматы

Re: smooth rotate, как в ангриботсе...

Сообщение raul82 20 ноя 2011, 16:32

выложу сюда, может кто знает как избавица от артифактов прорисовки ?
если присмотреца то заметны полосы прорисовки у всех крутящихся объектов

крутить можно стрелками

HTML код для вашего блога :
Код: Выделить всё
<script language='javascript' type="text/javascript"> document.write("<iframe marginheight='0' src='http://unity3d.ru/distribution/player.php?url=http://dl.dropbox.com/u/22792398/WebPlayer.unity3d&w=1024&h=768&t=false&preview=1' height='"+(768+30)+"' width='1024' frameborder='0' scrolling='no'></iframe>"); </script>
Последний раз редактировалось raul82 20 ноя 2011, 19:40, всего редактировалось 1 раз.
5 годиков 7 месяцев
Аватара пользователя
raul82
Старожил
 
Сообщения: 506
Зарегистрирован: 21 янв 2011, 17:48
Откуда: Алматы

Re: smooth rotate, как в ангриботсе...

Сообщение Neodrop 20 ноя 2011, 18:05

Не заметил никаких полос... Правда у меня WebPlayer 3.5
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: smooth rotate, как в ангриботсе...

Сообщение raul82 20 ноя 2011, 18:30

Neodrop писал(а):Не заметил никаких полос... Правда у меня WebPlayer 3.5

ну это скорее не полосы, а как будто изображение по частям прорисовываетса.
5 годиков 7 месяцев
Аватара пользователя
raul82
Старожил
 
Сообщения: 506
Зарегистрирован: 21 янв 2011, 17:48
Откуда: Алматы

Re: smooth rotate, как в ангриботсе...

Сообщение Neodrop 20 ноя 2011, 19:07

Тогда, вероятно, это проблемы вертикальной синхронизации? Попробуй её включить в настройках Quality Settings
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: smooth rotate, как в ангриботсе...

Сообщение raul82 20 ноя 2011, 19:39

Neodrop писал(а):Тогда, вероятно, это проблемы вертикальной синхронизации? Попробуй её включить в настройках Quality Settings

дая ее включил
так же пробовал QualitySettings.maxQueuedFrames ставить в 0.

залил демку побольше, там лучше видно )
5 годиков 7 месяцев
Аватара пользователя
raul82
Старожил
 
Сообщения: 506
Зарегистрирован: 21 янв 2011, 17:48
Откуда: Алматы

Re: smooth rotate, как в ангриботсе...

Сообщение Neodrop 20 ноя 2011, 19:53

По-прежнему ничего не видно. Всё кашерно.
Повторю - у меня плеер 3.5 - может на нём не лагает. Не знаю. :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: smooth rotate, как в ангриботсе...

Сообщение seaman 20 ноя 2011, 20:02

Полос не вижу. Вижу, что поворот идет дискретными значениями. Где-то градус-два каждое изменение.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: smooth rotate, как в ангриботсе...

Сообщение raul82 20 ноя 2011, 20:03

Neodrop писал(а):По-прежнему ничего не видно. Всё кашерно.
Повторю - у меня плеер 3.5 - может на нём не лагает. Не знаю. :-?


у меня и в плеере и в юньке 3.4.2 на винде и на макоси

если смоотреть в целом на сцену то можно не заметить,а вот если уставиться на шар, к примеру, то это бросается в глаза #:-s
5 годиков 7 месяцев
Аватара пользователя
raul82
Старожил
 
Сообщения: 506
Зарегистрирован: 21 янв 2011, 17:48
Откуда: Алматы

След.

Вернуться в Скрипты

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

Сейчас этот форум просматривают: Google [Bot] и гости: 12


cron