Перемещение NPC

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

Перемещение NPC

Сообщение Andy Ion 20 янв 2012, 02:06

Здравствуйте!

Уже порядочное время читаю форум, потихоньку пишу сам в [unity 3D] , но не могу сделать простое перемещение npc. Пробовал
Синтаксис:
Используется csharp
if (Vector3.Distance(Target.transform.position, transform.position) > attackDistance)
            {
                transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(Target.transform.position - transform.position), MobrotationSpeed);
                transform.position += transform.forward * MobSpeed * Time.deltaTime;
            }
 


NPC великолепно передвигаются по ровным поверхностям, по воздуху, но подняться на небольшой склон не в состоянии. Что я не так делаю?

Билд сцены, где это явно видно. NPC должны идти к пушке. Двигать камеру - WASD, Shift ускоряет передвижение.
http://www.terrax-game.ru/dist/dev/td.7z

Заранее спасибо.
Изображение
Форум про инди-игры и их разработку
Аватара пользователя
Andy Ion
UNец
 
Сообщения: 18
Зарегистрирован: 14 авг 2011, 21:04
Откуда: Russia, Sochi
Skype: vermilionx
  • Сайт
  • ICQ

Re: Перемещение NPC

Сообщение Левш@ 20 янв 2012, 02:32

подняться на небольшой склон не в состоянии. Что я не так делаю?

А может лучше characterController поставить ? Или rigidBody на худой конец...
1. Если у тебя в коде направление движения строго прямо, с какого перепугу моб на гору полезет?
2. Демка не демонстрирует описанную проблему...
3. Веб билд размером в 5 раз меньше, чем под РС...
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Перемещение NPC

Сообщение Andy Ion 20 янв 2012, 02:45

Левш@ писал(а):А может лучше characterController поставить ? Или rigidBody на худой конец...
1. Если у тебя в коде направление движения строго прямо, с какого перепугу моб на гору полезет?
2. Демка не демонстрирует описанную проблему...
3. Веб билд размером в 5 раз меньше, чем под РС...


characterController на неуправляемого игроком "монстра"? Разве будет работать?
1. Оно прямо, т.к. перед этой строкой явно задаётся куда смотреть - на цель.
2. Падающие колючие шарики не ползут к пушке - всё-таки демонстрирует.
3. Учту в будущем :)
Изображение
Форум про инди-игры и их разработку
Аватара пользователя
Andy Ion
UNец
 
Сообщения: 18
Зарегистрирован: 14 авг 2011, 21:04
Откуда: Russia, Sochi
Skype: vermilionx
  • Сайт
  • ICQ

Re: Перемещение NPC

Сообщение Левш@ 20 янв 2012, 04:09

characterController на неуправляемого игроком "монстра"? Разве будет работать?

У меня работает :) Правда гор там нет, но и вдругом проекте (с горами) тоже работало.
http://gamecreatingcommunity.ru/forum/1 ... 1322776507
Термин так и переводиться приблизительно - контроллер персонажа. ;)
Проблема то в коллизиях, а контроллеры умеют их обрабатывать.

не ползут к пушке - всё-таки демонстрирует.

подняться на небольшой склон не в состоянии. Что я не так делаю?

:)
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Перемещение NPC

Сообщение Andy Ion 20 янв 2012, 21:10

Левш@ писал(а):У меня работает :) Правда гор там нет, но и вдругом проекте (с горами) тоже работало.
http://gamecreatingcommunity.ru/forum/1 ... 1322776507
Термин так и переводиться приблизительно - контроллер персонажа. ;)
Проблема то в коллизиях, а контроллеры умеют их обрабатывать.

У меня же ни в какую. Либо отлетает от поверхности с нереальной скоростью, либо крадётся ещё медленнее, чем раньше. При этом шар как-то странно дёргается, нервничает, походу.

Пробовал
Синтаксис:
Используется csharp
transform.Translate(Vector3.forward * MobSpeed * Time.deltaTime, Space.World);
и
 transform.position = Vector3.Lerp(transform.position, Target.transform.position, MobSpeed * Time.deltaTime);


В обоих случаях перемещает правильно, но очень быстро. Пробовал MobSpeed ставить и 1, и 0.001, всё равно.

Не хочется прибегать к извращению в виде увеличения размеров сцены.

Существуют ли другие способы перемещения?
Изображение
Форум про инди-игры и их разработку
Аватара пользователя
Andy Ion
UNец
 
Сообщения: 18
Зарегистрирован: 14 авг 2011, 21:04
Откуда: Russia, Sochi
Skype: vermilionx
  • Сайт
  • ICQ

Re: Перемещение NPC

Сообщение Andy Ion 30 янв 2012, 19:33

Проблема решена способом, не предложенным здесь.
Reminder: нехрен юзать rigidbody и тягать трансформ через position (:

Закройте тему, пожалуйста.
Изображение
Форум про инди-игры и их разработку
Аватара пользователя
Andy Ion
UNец
 
Сообщения: 18
Зарегистрирован: 14 авг 2011, 21:04
Откуда: Russia, Sochi
Skype: vermilionx
  • Сайт
  • ICQ

Re: Перемещение NPC

Сообщение Левш@ 30 янв 2012, 20:18

нехрен юзать rigidbody и тягать трансформ через position (:

Воистину... а за каким хреном было юзать одновременно чар контроллер и риджБоди ? ЧарКонтрол имеет риджБодю в себе... и при компоненте чарКонтроллер
опять же использовать движение через position ? :(
У вас с головой все в порядке?

Использование чарКонтроллера само собой подразумевает такое движение:
Синтаксис:
Используется javascript
var controller : CharacterController = GetComponent(CharacterController);
var flags = controller.Move(moveDirection * Time.deltaTime);


Достаточно было открыть скриптРеференсы в хелпе, забить в поиск слово CharacterController и посмотреть пример использования... :-w
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Перемещение NPC

Сообщение Andy Ion 31 янв 2012, 10:19

Левш@ писал(а):Воистину... а за каким хреном было юзать одновременно чар контроллер и риджБоди ?

Я не использовал CharacterController.

Сделал через rigidbody.AddForce.
Изображение
Форум про инди-игры и их разработку
Аватара пользователя
Andy Ion
UNец
 
Сообщения: 18
Зарегистрирован: 14 авг 2011, 21:04
Откуда: Russia, Sochi
Skype: vermilionx
  • Сайт
  • ICQ


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

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

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