Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Передвижение с помощью кнопок WASD

Version 4.8

First Personal Shooter

В течение этого ознакомительного урока мы разберём стандартный проект First Person Shooter предоставленный в качестве шаблона Epic Games.

Создание проекта

1) Откройте Project Browser
2) Перейдите на вкладку New Project
3) Выберите Blank на вкладке Blueprint
4) Имя нашего проекта FPS
5) Также укажите No Starter Content, так как мы всё добавим сами
6) Нажмите Create Project

После того как переместились в редактор надо сохранить карту

1) Правой кнопкой мыши на папке с именем Content > New Folder
2) Назовём папкуMap
3) Перейдём File > Save As и выберем папку Map
4) Имя нашей карты FirstPersonExampleMap
5) Нажмите Save

Установим нашу карту по умолчанию при запуске проекта

1) Перейдём в Edit > Project Settings
2) Выберем Maps and Modes
3) Затем выберем FirstPersonExampleMap в Default Maps > Game Default Map
4) Закроем Project Settings

Добавление GameMode

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

1) Перейдём в File > Add Code To Project
2) Выберем GameMode и нажмём Next
3) Имя FPSGameMode
4) Нажмите Create Class
5) Дождитесь пока к вашему проекту добавятся все необходимые компоненты

Создадим и инициализируем конструктор

1) Перейдите в FPSGameMode.hи добавьте следующее

AFPSGameMode(const FObjectInitializer& ObjectInitializer);

2) Перейдите в FPSGameMode.cppи добавьте следующее

 

AFPSGameMode::AFPSGameMode(const FObjectInitializer& ObjectInitializer)

:Super(ObjectInitializer)

{}

 

3) Установим наш FPSGameModeпо умолчанию перейдя в Edit > Project Settings

4) Выберем Maps and Modes
5) Затем выберем FPSGameModeв Default Modes > Default GameMode

6) Закроем Project Settings

Если вы хотите проверить правильно ли вы подключилиGameMode, то добавьте следующий код:

В FPSGameMode.h

virtual void StartPlay() override;

 

ВFPSGameMode.cpp

 

void AFPSGameMode::StartPlay()

{

Super::StartPlay();

if (GEngine)

{

GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Yellow, TEXT("This is FPSGameMode"));

}

StartMatch();

}

 

На экране появится надпись желтым цветом This is FPSGameMode.
После проверки удалите этот код.

 

Добавление персонажа

Теперь создадим персонажа, которым будем управлять.

1) Перейдём в File > Add Code To Project
2) Выберем Character и нажмём Next
3) Имя FPSCharacter
4) Нажмите Create Class
Удалите все присутствующие методы в классах кроме конструктора. Мы добавим только нужные нам.


5) Добавьте в FPSGameMode.cppстроку после других#include

#include "FPSCharacter.h"

6) Также добавьте в конструктор следующие строки

static ConstructorHelpers::FClassFinder<APawn> PlayerPawnClassFinder(TEXT("/Game/FirstPerson/Blueprints/FirstPersonCharacter"));

DefaultPawnClass = PlayerPawnClassFinder.Class;

7) В папке Contentсоздать папкус именемBlueiprint
8) Затем перейти в C++ Classes > FPS
9) Найти класс FPSCharater нажать правой кнопкой мыши и выбрать Creat Blueprint class based on FPSCharater и выбрать нашу папку Blueiprint

Теперь при запуске игры вы сможете смотреть через камеру Charactera, но движение ещё не настроено.

Передвижение с помощью кнопок WASD.

Теперь настроим управление Charactera.

1) Перейдите в Edit > Project Settings и выберите Input
2) Под Bindings нажмите на плюс рядом с Axis Mappings
3) Сделайте как на картинке для всех кнопок

4) Закройте меню Project Settings

Класс Character имеет функцию с именем SetupPlayerInputComponent, которая вызывается, когда PlayerController захватывает Character. Мы переопределим эту функцию, чтобы связать наши собственные обработчики осей для MoveForward и MoveRight.

1) В FPSCharacter.h, добавьте следующее в protectedсекцию

// Метод для установки управления

virtual void SetupPlayerInputComponent(class UInputComponent* InputComponent) override;

 

2) Теперь добавим обработчики в public секцию

 

// Передвижение вперёд/назад

UFUNCTION()

void MoveForward(float Val);

 

// Передвижение влево/вправо

UFUNCTION()

void MoveRight(float Val);

 

3) Перейдём в FPSCharacter.cpp и добавим после конструктора в public секцию

 

void AFPSCharacter::SetupPlayerInputComponent(class UInputComponent* InputComponent)

{

InputComponent->BindAxis("MoveForward", this, &AFPSCharacter::MoveForward);

InputComponent->BindAxis("MoveRight", this, &AFPSCharacter::MoveRight);

}

 

4) Добавьте следующие функции в FPSCharacter.cpp

// Передвижение вперёд/назад

void AFPSCharacter::MoveForward(float Value)

{

if (Value != 0.0f)

{

AddMovementInput(GetActorForwardVector(), Value);

}

}

// Передвижение влево/вправо

void AFPSCharacter::MoveRight(float Value)

{

if (Value != 0.0f)

{

AddMovementInput(GetActorRightVector(), Value);

}

}

5) Протестируйте персонажа

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.