Почему PlayerController «владеет» тангажом и поворотом, а Персонаж «владеет» своим местоположением? - PullRequest
0 голосов
/ 25 августа 2018

Я новичок в UE4 и пытаюсь понять некоторые базовые концепции управления пешкой персонажа. Я пытаюсь реализовать логику движения персонажа. Я собираюсь использовать базовый WASD для перемещения персонажа вперед, назад, из стороны в сторону - как почти во всех основных шутерах от первого лица. Я также хочу, чтобы ввод с помощью мыши вращал символ.

У меня есть свои собственные классы PlayerController и Character.

Добавление кода для перемещения символа - вперед, назад, вбок - кажется, все идет в самом классе символов. Там есть метод с именем AddMovementInput, который, кажется, изменяет позицию для меня. Это также заставляет меня думать, что класс персонажа «владеет» своим собственным местоположением. Это имеет смысл, потому что одновременно может быть несколько классов персонажей, каждый в разных местах, верно?

Добавление кода для поворота символа имеет аналогичные методы управления поворотом - AddControllerYawInput, AddControllerPitchInput, AddControllerRollInput. Простой просмотр названий функций позволяет предположить, что подача и поворот рыскания «принадлежат» контроллеру игрока. Глядя на документы и комментарии к функциям, мы еще раз подтверждаем: «Добавить входные данные (влияющие на Yaw) в ControlRotation контроллера, если он является локальным PlayerController.» Так что, мне кажется, что pitch and roll - значения, «принадлежащие» контроллеру игрока, верно?

Как начинающий, это меня смущает. Я просто смущен тем фактом, что местоположение хранится в самом персонаже, но вращение, похоже, не выполняется?

Может ли кто-нибудь помочь мне разобраться с этим и объяснить, как я должен «думать» о движении персонажа или пешки? Мне просто неясно, и это как бы заставляет меня зацикливаться на этой теме.

1 Ответ

0 голосов
/ 25 августа 2018

Цель этого проекта - отделить Физику персонажей от Механика управления .С точки зрения написания программного обеспечения, идея состоит в том, чтобы отделить вращение персонажа в физике игрового мира и вращение контроля игрока с точки зрения игрового процессамеханизм взаимодействия.Например, Я могу стремиться вверх, в то время как тело моего персонажа как-то наклоняется вниз (и поэтому может физически сталкиваться с объектом, расположенным под ним).

Видите, вы правы в своих наблюдениях относительно того, "кому принадлежит что". Вы можете видеть , что AController, базовый класс из PlayerController, имеет переменную-член ControlRotation типа FRotator.Документация для этого члена данных гласит:

ControlRotation (доступ к которому осуществляется через GetControlRotation ()), определяет направление просмотра / прицеливания контролируемой пешки ...

And GetControlRotation() дальнейшие уточнения :

Это полный поворот цели, который [...] может отличаться от вращения контролируемой пешки (которыйнапример, может не выбирать визуальную подачу или крен).

Например, вращение контроллера держится отдельно от всего, что связано с вращением, которым персонаж управляет для себя.1043 * Это дополнительно поддерживается в документации, например, см. В Pawn ( базовый класс из ACharacter):

Pawn - базовый класс всех актеров, которыемогут быть одержимы игроками или ИИ.Они являются физическими представлениями игроков и существ на уровне.

и ниже AController:

Контроллеры нефизические актеры, которые могут владеть Пешкой, чтобы контролировать ее действия.

...