Изучаем С++ создавая игры в ue4 Уилльям Шериф Изучайте программирование С++ с интересным применением реально мира, что позволит вам создавать ваши собственные игры!



Pdf көрінісі
бет170/252
Дата06.01.2022
өлшемі12,25 Mb.
#11940
1   ...   166   167   168   169   170   171   172   173   ...   252
Устанавливаем ввод управления 
1.  Чтобы установить ввод управления, перейдите в Settings | Project Settings…
 


167 | 
С т р а н и ц а
 
 
2.  Далее, в панели по левую сторону, под Engine прокручивайте вниз, пока не 
увидите Input.  
 
3.  По правую сторону, вы можете установить привязки (Bindings). Щёлкните по 
маленькой  стрелке  после  Axis  Mapping,  чтобы  открыть  меню.  Добавьте 
только  две  оси  на  карту,  чтобы  начать.  Одна  называется  Forward  –  Вперёд 
(связана  с  буквой  W  на  клавиатуре),  а  вторая  называется  Strafe  –  Обстрел 
(связанная  с  буквой  D  на  клавиатуре).  Запомните  названия,  которые  вы 
даёте, мы скоро обратимся к ним в коде С++. 
4.  Закройте диалоговое окно Project Settings. Теперь откройте ваш С++ код. 
В конструкторе Avatar.h, вам нужно  добавить три объявления функции-члена, как 
показано здесь: 
UCLASS() 
class GOLDENEGG_API AAvatar : public ACharacter 

GENERATED_UCLASS_BODY() 
// 
Новые! Эти три новых объявления функций-членов 
// 
будут применяться для движения нашего игрока! 
void SetupPlayerInputComponent(class UInputComponent* InputComponent) 
override; 
void MoveForward( float amount ); 
void MoveRight( float amount ); 
}; 


168 | 
С т р а н и ц а
 
 
Обратите  внимание,  что  первая  функция-член,  которую  мы  добавляем 
(
SetupPlayerInputComponent
)  является  подменой  для  виртуальной  функции. 
SetupPlayerInputComponent
 это виртуальная функция в базовом классе Apawn
В  файле  Avatar.cpp,  вам  нужно  поместить  тела  функций.  Добавьте  следующие 
определения функции-члена: 
void AAvatar::SetupPlayerInputComponent(class UInputComponent* 
InputComponent) 

check(InputComponent); 
InputComponent->BindAxis("Forward", this, &AAvatar::MoveForward); 
InputComponent->BindAxis("Strafe", this, &AAvatar::MoveRight); 

Эта  функция-член  ищет  привязки  осей  Forward  и  Strafe,  которые  мы  только  что 
создали  в  Unreal  Editor  и  связывает  их  к  функции-члену  внутри  этого  класса.  К 
какой  функции-члену  должны  мы  привязать?  Почему  мы  должны  привязывать  к 
AAvatar::MoveForward 
и 
AAvatar::MoveRight
. Вот определение функции-члена для этих 
двух функций: 
void AAvatar::MoveForward( float amount ) 

// 
Не вводите тело этой функции, если контроллер  
// 
ещё не установлен или если сумма для движения равна 0 
if( Controller && amount ) 

FVector fwd = GetActorForwardVector(); 
// 
мы вызываем AddMovementInput, чтобы собственно двигать  
// 
игрока `суммой` в направлениях  `fwd`  
AddMovementInput(fwd, amount); 


void AAvatar::MoveRight( float amount ) 

if( Controller && amount ) 

FVector right = GetActorRightVector(); 
AddMovementInput(right, amount); 
     } 



Достарыңызбен бөлісу:
1   ...   166   167   168   169   170   171   172   173   ...   252




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет