- Главная
- Форум
- База знаний (кратко, но по сути)
- Blueprint-классы
- Класс Pawn в Unreal Engine (UE4, UE5)
Класс Pawn в Unreal Engine (UE4, UE5)
Pawn в Unreal Engine
Pawn — это объект, который визуально и физически представляет игрока или искусственный интеллект в игровом мире и может управляться с помощью Controller.
Controller можно представить как «разум». Он обрабатывает ввод игрока или принимает решения на основе AI-логики, после чего передаёт команды Pawn. Сам Pawn в этой модели выступает в роли «тела»: он непосредственно находится в игровом мире и выполняет полученные команды.
Можно провести и другую аналогию — с шахматами. Pawn — это фигура на доске, а Controller — игрок, который этой фигурой управляет. Само слово Pawn переводится с английского как «пешка», что хорошо передаёт основную идею: это объект, которым кто-то управляет.
Иначе говоря, Pawn можно воспринимать как аватар игрока или NPC в игровом мире. Именно он задаёт физическое присутствие управляемого объекта: определяет, где объект находится, как выглядит и каким образом взаимодействует с окружением.
К Pawn можно добавлять Mesh-компоненты, отвечающие за отображение модели. Поэтому Pawn может выглядеть как персонаж, автомобиль, дрон, лодка или практически любой другой управляемый объект.
При этом Pawn совсем не обязательно должен иметь видимую модель. Например, в стратегии, симуляторе полёта или при реализации игровой камеры Pawn может быть практически невидимым для игрока. Но даже в таком случае он остаётся полноценным объектом игрового мира, имеет своё положение в пространстве и может содержать собственную игровую логику.
Основная функциональность Pawn
С технической точки зрения Pawn — это базовый класс для управляемых объектов в Unreal Engine. Он наследуется от Actor, поэтому обладает всеми его основными возможностями, но дополнительно предоставляет функциональность, связанную именно с возможностью быть управляемым объектом.
Среди главных особенностей Pawn можно выделить следующие:
- Possession — способность Pawn находиться под управлением Controller.
- Pawn Movement Component — Pawn может использовать компонент движения, например Floating Pawn Movement, который отвечает за его перемещение. В большинстве случаев такой компонент перемещает корневой компонент Pawn.
- Input Vector — Pawn может получать от Controller команды на движение, накапливать их в виде вектора ввода и передавать эту информацию компоненту движения. В свою очередь Movement Component интерпретирует полученный ввод и преобразует его в фактическое перемещение объекта.
При этом важно понимать, что сам по себе Pawn с точки зрения игрового представления практически пуст. По умолчанию у него нет ни модели, отвечающей за визуальное отображение, ни коллизии для физических взаимодействий, ни стандартной логики ходьбы, прыжков, гравитации и других привычных способов перемещения.
Однако Pawn наследуется от класса Actor, а значит, может находиться в игровом мире и содержать различные компоненты. Поэтому разработчик самостоятельно определяет, из чего будет состоять конкретный Pawn: добавляет Mesh для визуального представления, коллизию для взаимодействия с окружающим миром, компонент движения и другие необходимые компоненты.
Кроме того, Pawn, расширяя функциональность Actor, предоставляет базовую инфраструктуру, которая связывает все эти части в единую систему управления. Он поддерживает механизм Possession, благодаря которому Controller может получить над ним управление, а также предоставляет механизм передачи команд движения в Movement Component.
В результате формируется общая цепочка управления: Controller → Pawn → Movement Component → перемещение объекта
Таким образом, Pawn можно рассматривать не как готового игрового персонажа, а как базовую основу для создания объектов, которыми может управлять Controller. Внешний вид, коллизия и конкретный способ движения определяются разработчиком с помощью компонентов.
Possession — получение управления над Pawn
Одна из главных особенностей Pawn заключается в том, что Controller может получать управление над ним. В Unreal Engine этот механизм называется Possession. Сам термин можно перевести как «овладение» или «получение контроля».
Possession — это процесс, при котором Controller получает управление над конкретным Pawn.
Сначала Pawn появляется в игровом мире. Этот процесс называется Spawn. После создания Pawn уже существует на уровне, однако это ещё не означает, что им кто-либо управляет.
Затем Controller выполняет Possess, связываясь с выбранным Pawn и получая возможность управлять им. После этого Controller может обрабатывать ввод игрока либо формировать управляющие команды самостоятельно и передавать их Pawn. Например, при перемещении Pawn может получать от Controller направление движения в виде Input Vector. Этот вектор накапливается в течение кадра, после чего используется компонентом движения, который непосредственно отвечает за перемещение Pawn в игровом мире.
Если Controller больше не должен управлять текущим Pawn, выполняется обратная операция — Unpossess. Связь между Controller и Pawn разрывается, однако сам Pawn при этом может продолжать существовать в игровом мире.
После этого Controller при необходимости может выполнить Possess для другого Pawn. Именно этот механизм позволяет динамически переключать управление между различными объектами. Например, сначала игрок управляет персонажем. Когда персонаж садится в автомобиль, его Controller может перестать управлять Pawn персонажа и выполнить Possess для Pawn автомобиля. После выхода из автомобиля Controller снова переключается на Pawn персонажа.
Таким образом, Possession позволяет отделить объект, который принимает решение об управлении, от объекта, которым непосредственно управляют. Это делает систему Pawn и Controller гибкой и позволяет легко реализовывать переключение между персонажами, транспортом и другими управляемыми объектами.
Pawn и дочерние классы
Как мы уже знаем, Pawn является дочерним классом Actor. При этом сам Pawn также выступает родительским классом для нескольких более специализированных классов.
DefaultPawn
DefaultPawn — это готовая реализация Pawn, предназначенная прежде всего для свободного перемещения по игровому миру. Такой объект удобно использовать для быстрого тестирования уровня, проверки окружения, отладки или перемещения по сцене без необходимости создавать полноценного игрового персонажа.
SpectatorPawn
SpectatorPawn предназначен для режима наблюдателя. Он используется в ситуациях, когда игроку не нужен обычный физический персонаж, но при этом необходимо свободно перемещаться по уровню и наблюдать за происходящим.
Например, SpectatorPawn может использоваться после гибели персонажа, во время просмотра матча или в других режимах, где игрок выступает в роли наблюдателя.
Character
Наиболее важным наследником Pawn является Character.
Character — это специализированный класс, предназначенный прежде всего для создания игровых персонажей. В отличие от базового Pawn, он уже содержит набор компонентов, необходимых для типичного персонажа:
- Capsule Component — отвечает за основную коллизию персонажа;
- Skeletal Mesh Component — используется для его визуального представления и анимации;
- Character Movement Component — реализует готовую систему передвижения.
Благодаря этому Character удобно использовать в тех случаях, когда персонаж должен ходить по поверхности, прыгать, падать, плавать, взаимодействовать с гравитацией и выполнять другие типичные для игрового персонажа действия.
Pawn или Character — что выбрать
При работе с Unreal Engine часто возникает вопрос: что лучше использовать — Pawn или Character?
Главное различие между ними связано с тем, насколько готовая и специализированная система движения требуется объекту. Pawn лучше воспринимать как универсальную основу для создания нестандартных управляемых объектов. Базовый Pawn не предоставляет готовую систему перемещения, характерную для обычного персонажа, поэтому разработчик может самостоятельно определить, какие компоненты использовать и по каким правилам объект будет двигаться.
Поэтому Pawn хорошо подходит, например, для:
- дрона;
- автомобиля;
- лодки;
- другой техники;
- стратегической камеры;
- произвольного летающего объекта.
Character, напротив, уже предоставляет готовую основу именно для персонажа, который перемещается по игровому миру привычным способом.
Поэтому общее правило выбора достаточно простое:
- Нужен обычный игровой персонаж с готовой системой передвижения — используйте Character.
- Нужен нестандартный управляемый объект со своей логикой движения — используйте Pawn.
Что в итоге
Pawn в Unreal Engine — это базовый класс для создания управляемых объектов, который выступает физическим «телом» в игровом мире и получает команды от Controller через механизм Possession.
Сам по себе Pawn не является готовым игровым объектом: он предоставляет основу для управления со стороны Controller и взаимодействия с компонентами движения, а внешний вид, коллизия и конкретная логика движения задаются разработчиком с помощью компонентов или пользовательской логики.
Pawn хорошо подходит для объектов с собственной логикой движения — например, для лодок, дронов, различной техники, стратегических камер и других нестандартных управляемых объектов.
===============
Более подробно изучить класс Pawn Вы можете в статье: Pawn в Unreal Engine
===============
Зарегистрироваться в ЛК и скачать книгу по Blueprint: [Blueprint. Взгляд с высоты «птичьего полёта»]
