Ответ: Вопросы от новичка
Посоны! Нужна помощь!
Делаю систему ботов.
Требования:
- Модель состоит из меша и кучи анимированных костей
- Бот может пинать всё, что попадается ему под ноги (всякие ящики с коллайдерами + 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'ах проекта.
|