Player Input and Pawns 2 часть

By | November 22, 2015

Первая часть Настройка Pawn(Customize a Pawn)

Конфигурация игрового управления в unreal engine 4

Конфигурация игрового управления (Configure Game Input)

Есть два типа отображения игрового входа, это действие и оси.

Привязка действия в игре надо предполагать что это нажатие на клавиши мыши или джойстика, а так же передвижение. Данные события отображают щелчёк мыши, двойной клик или удержание короткий промежуток времени. Дискретные действия, такие как прыжок, стрельба и так далее, являются хорошим кондидатом дла таких типов карт.

Оси отображения являются непрерывным входом, который реализуется с помощью джойстика или курсора мыши. Сообщение о текущем местоположении объекта сообщается каждый кадр, даже если не двигаться. Такие средства как стрельба, просмотр во круг себя или управление транспортом обрабатываются таким образом.

Управление меняется прям в проекте, через редактирование текущего проекта.

1) В Unreal Engine редакторе в меню “edit” необходимо найти пункт “Project Settings” EditProjectSettings

После открытия меню, необходимо найти опцию “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

ConfigureInput

4) Теперь когда мы настроили наш вход в игру, давайте настроим наш MyPawn на уровне.

ClassInContentBrowser

PawnInSceneView

4) Теперь нам необходимо сопоставить  MyPawn. Для того чтобы увидеть его в игре, необходимо добавить Static Mesh. Мы можем сделать это выбрав MyPawn в только что созданных компонентах, унаследованых в панепени деталей (Details), через выпадающий список в категории Static Mesh. Когда я сам попробовал выбрать элемент в Static Mesh, то список был пуст. Для того чтобы это исправить, достаточно перетащить тот предмет который будет у вас отображаться из BSP

StaticMesh

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);

}

Следующий урок

Связывание игровой логики и действий пользователя через программирование

Category: Uncategorized

Leave a Reply

Your email address will not be published. Required fields are marked *