Показать сообщение отдельно
Старый 30.06.2012, 01:07   #427
cahekp
Разработчик
 
Аватар для cahekp
 
Регистрация: 14.12.2008
Адрес: Томск
Сообщений: 530
Написано 270 полезных сообщений
(для 883 пользователей)
Ответ: Вопросы от новичка

Посоны! Нужна помощь!

Делаю систему ботов.
Требования:
- Модель состоит из меша и кучи анимированных костей
- Бот может пинать всё, что попадается ему под ноги (всякие ящики с коллайдерами + Rigidbody)
- Убил бота - он упал по рэгдольному. Стрельнул из шотгана с близкого расстояния - он красиво и по физике отлетел.
- Взависимости от того, по какой части тела попал, дается то или иное количество очков.
- Бот не может проходить сквозь стены
- Два бота не могут входить друг в друга

В общем, что делал я:
1) Через стандартный "Ragdoll Wizard" создавал коллайдеры, rigidbody и joint'ы для отдельных частей тела.
2) Для всех rigidbody делаю isKinematic равным true.
3) Стреляю по боту с помощью Physics.Raycast. Взависимости от того, по какому коллайдеру попал, даю то или иное количество очков игрокам и уменьшаю количество жизней у бота.
4) Убил бота - выключаю везде isKinematic и придаю немного силы на ту часть тела, куда был произведен последний выстрел. Всё отлично.
5) Осталось выполнить последние два пункта. Решил делать через CharacterController и метод SimpleMove. Добавляю CharacterController, настраиваю капсулу. Проверяю. Черт! Выстрел (Physics.Raycast) возвращает не часть тела, а саму капсулу. Решил тем, что поместил CharacterController на слой "IgnoreRaycast". Проверяю - теперь всё работает.
6) Использую SimpleMove. Блин! Движение какое-то беспонтовое. Дергается и практически стоит на месте. Оказывается, ему мешают коллайдеры (части тела), которые находятся внутри капсулы CharacterController'а. Отключаю коллайдеры - CharacterController перемещается нормально, но теперь не понятно, по какой части тела попадаешь.

И вот, вопрос: что можно с этим сделать? Крайне желательно все действия производить через скрипты, не давая конечному пользователю (настройщику ботов) что-то перед этим химичить и настраивать в различных Manager'ах проекта.
__________________
(Offline)
 
Ответить с цитированием