Первая часть Настройка Pawn(Customize a Pawn)
Конфигурация игрового управления в unreal engine 4
Конфигурация игрового управления (Configure Game Input)
Есть два типа отображения игрового входа, это действие и оси.
Привязка действия в игре надо предполагать что это нажатие на клавиши мыши или джойстика, а так же передвижение. Данные события отображают щелчёк мыши, двойной клик или удержание короткий промежуток времени. Дискретные действия, такие как прыжок, стрельба и так далее, являются хорошим кондидатом дла таких типов карт.
Оси отображения являются непрерывным входом, который реализуется с помощью джойстика или курсора мыши. Сообщение о текущем местоположении объекта сообщается каждый кадр, даже если не двигаться. Такие средства как стрельба, просмотр во круг себя или управление транспортом обрабатываются таким образом.
Управление меняется прям в проекте, через редактирование текущего проекта.
1) В Unreal Engine редакторе в меню “edit” необходимо найти пункт “Project Settings”
После открытия меню, необходимо найти опцию “input” из раздела “engine”. Мы можем расширить категорию связью(Bindings), добавив ещё какое действие отображение (Action Mapping) и второе отображение осей (Axis Mappings).
Знак плюса после Action Mapping и Axis Mappings добавит ещё одно действие. Стрелка слево предназначена для скрытия или сопоставления наших действий. Для добавления дополнительного отображения входных данных, кликните на признак плюса в отображении. Ниже привидена таблица входных данных которые мы установим. Следует особо обратит внимание на отрицательные значения для S и A.
Action Mapping | ||
Grow | Space Bar |
Axis Mapping | ||
MoveX | W | 1.0 |
S | -1.0 | |
MoveY | A | -1.0 |
D | 1.0 |
4) Теперь когда мы настроили наш вход в игру, давайте настроим наш MyPawn на уровне.
4) Теперь нам необходимо сопоставить MyPawn. Для того чтобы увидеть его в игре, необходимо добавить Static Mesh. Мы можем сделать это выбрав MyPawn в только что созданных компонентах, унаследованых в панепени деталей (Details), через выпадающий список в категории Static Mesh. Когда я сам попробовал выбрать элемент в Static Mesh, то список был пуст. Для того чтобы это исправить, достаточно перетащить тот предмет который будет у вас отображаться из BSP
5) Теперь можно вернутся в Visual Studio и написать код который будет реагировать на нажатие клавиш, которые мы установили в панели.
MyPawn.h
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. #pragma once #include "GameFramework/Pawn.h" #include "MyPawn.generated.h" UCLASS() class HOWTO_PLAYERINPUT_API AMyPawn : public APawn { GENERATED_BODY() public: // Sets default values // Устанавливаем значения по умолчанию AMyPawn(); // Called when the game starts or when spawned // Вызываем этот метод при старте игры virtual void BeginPlay() override; // Called every frame // Вызываем метод который повторяется каждый кадр virtual void Tick( float DeltaSeconds ) override; // Called to bind functionality to input // Вызываем функцию которая реагирует при нажатие клавиш virtual void SetupPlayerInputComponent(class UInputComponent* InputComponent) override; UPROPERTY(EditAnywhere) USceneComponent* OurVisibleComponent; };
MyPawn.cpp
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. #include "HowTo_PlayerInput.h" #include "MyPawn.h" // Sets default values AMyPawn::AMyPawn() { // Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true; // Set this pawn to be controlled by the lowest-numbered player AutoPossessPlayer = EAutoReceiveInput::Player0; // Create a dummy root component we can attach things to. // Создаём корневой элемент к которому будем прикреплять все наши элементы RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("RootComponent")); // Create a camera and a visible object // Создаём камеру и видимые элементы UCameraComponent* OurCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("OurCamera")); OurVisibleComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("OurVisibleComponent")); // Attach our camera and visible object to our root component. //Offset and rotate the camera. // Подкрепляем нашу камеру и видимый компонент к корневому компоненту // Устанавливаем значение положения камеры OurCamera->AttachTo(RootComponent); OurCamera->SetRelativeLocation(FVector(-250.0f, 0.0f, 250.0f)); OurCamera->SetRelativeRotation(FRotator(-45.0f, 0.0f, 0.0f)); OurVisibleComponent->AttachTo(RootComponent); } // Called when the game starts or when spawned void AMyPawn::BeginPlay() { Super::BeginPlay(); } // Called every frame void AMyPawn::Tick( float DeltaTime ) { Super::Tick( DeltaTime ); } // Called to bind functionality to input void AMyPawn::SetupPlayerInputComponent(class UInputComponent* InputComponent) { Super::SetupPlayerInputComponent(InputComponent); }
Следующий урок
Связывание игровой логики и действий пользователя через программирование