- у твоих "юнитов" не настроен "коллайдер". См. colliderMode в настройках "юнита", хотя он здесь не поможет, на новых версиях движка есть такой баг. Решается он очень просто, дело в том что в новых версиях движка физ. движок претерпел некоторые изменения. Эти изменения затронули флаг "geom_colltype_player", который теперь подразумевает только коллизию с "коллайдером" игрока("коллайдер" - это такой примитив в виде вертикально повёрнутой капсулы, которая крепится ко всем сущьностям использующим класс "AnimatedCharacter" и определяет границы физического взаимодействия персонажа с окружением. Коллайдеров так же может быть несколько на одном персонаже, крепить их можно куда угодно, на кости или точку в локальном пространстве скелета). Чтобы исправить данное недоразумение, необходимо открыть CryAction модуль движка в MSVS, найти файл AnimatedCharacter.cpp и изменить строкуЦитата
вложатся один в другой
Код |
|
1 |
m_characterCollisionFlags = geom_colltype_player; |
Код |
|
1 |
m_characterCollisionFlags = geom_colltype_player | geom_colltype11 | geom_colltype12; |
Это сообщение было отредактировано 1 раз(а), последнее редактирование в "Velior" (16 апреля 2016, 22:54)
Код |
|
1 |
geom_colltype11 | geom_colltype12 |
Код |
|
1 |
geom_collides |
Код |
|
1 |
else if (m_colliderMode == eColliderMode_Pushable) |
Код |
|
1 |
characterGeomCollTypeFlags |
Код |
|
1 |
geom_colltype_player | geom_collides |
Код |
|
1 |
geom_colltype_player | geom_collides | geom_proxy |
Код |
|
1 |
pd.collTypes = ent_terrain | ent_static | ent_rigid | ent_sleeping_rigid | ent_living; |
Код |
|
1 |
pd.collTypes = ent_all; |
Код |
|
1 |
eColliderMode_Pushable |
- вот собственно и причина. Действительно, на новых "юнитах" коллайдер не работает как положено, причина в том, что в каком-то другом модуле идёт повторный запрос с другими параметрами на "физикализацию" коллайдера(либо наоборот не идёт, что более вероятно(скорее всего процесс состоит из 2х или более запросов, первый или второй по каким-то причинам не выполняется на новых "юнитах")), всё что описано выше будет работать только на стандартных "Human". Так что здесь 5 вариантов: 1)копание исходников других модулей кроме геймдлл и CryAction на предмет создания коллайдеров персонажей, 2) независимое повторение процесса создания и "физикализации" основного коллайдера, 3)создание дополнительного коллайдера на персонажах, 4)использование функции EnableRigidCollider(r), 5)отказ от использования "новых юнитов". В общем, как-то так. Лично я выбрал номер 3.Цитата
разве что добавлен новый юнит через REGISTER_FACTORY
Это сообщение было отредактировано 2 раз(а), последнее редактирование в "Npc" (17 апреля 2016, 10:43)
- и жди у моря погоды. К слову, фиксится эта проблема за 5 минут созданием дополнительного коллайдера, лично я уже пофиксил. Вообще, по умолчанию, на персонажах 2 коллайдера основной(его настройки берутся из LUA скрипта персонажа, коллайдер имеет динамической размер в зависимости от стойки персонажа) и ещё один для взаимодействия с растительностью. На твоём скрине только один коллайдер, судя по цвету и размеру это тот который для растительности. Выстави обычного "Human" и посмотри на его коллайдеры при игре - их будет 2.Цитата
создай тему на официальном форуме
Зачем инструкция? Примеров создания коллайдеров в коде целая куча, см. туже функцию EnableRigidCollider. Времена инструкций на 10 страниц закончились, кому надо тот найдёт, кому надо тот поймёт, а за бесплатными подробными инструкциями нужно обращаться к Crytek.