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



Pdf көрінісі
бет200/252
Дата06.01.2022
өлшемі12,25 Mb.
#11940
1   ...   196   197   198   199   200   201   202   203   ...   252
Получаем аватар 
Объект класса player можно найти в любое время, из любого места в коде, просто 
вызвав следующий код: 
AAvatar *avatar = Cast( UGameplayStatics::GetPlayerPawn( GetWorld(), 0 ) );
   
Затем  мы  передаём  ему  предмет,  вызывая  функцию  AAvatar::Pickup() 
определённую ранее.  
Так  как  объект  PlayerPawn  на  самом  деле  экземпляр  AAvatar,  мы  приводим 
результат  к  классу  AAvatar,  используя  команду  Cast.  Семья  функций 
UGameplayStatics доступна повсюду в вашем коде, это глобальные функции.  
Получаем контроллер игрока 
Также можно получать контроллер игрока из суперглобальных:  
APlayerController* PController = GetWorld()->GetFirstPlayerController(); 
Функция GetWorld() определена в базовом классе UObject. Так как все объекты UE4 
происходят от UObject, то любой объект в игре имеет доступ к объекту world.   
Получаем HUD 
Хотя эта организация и может показаться странной поначалу,  HUD на самом деле 
прикреплён к контроллеру игрока. Вы можете взять HUD следующим образом: 
AMyHUD* hud = Cast( PController->GetHUD() ); 
Мы  приводим  объект  HUD,  так  как  ранее  мы  установили  HUD  экземпляром 
AMyHUD  в  блупринтах.  Так  как  мы  будем  часто  использовать  HUD,  мы  можем 
держать  постоянный  указатель  на    HUD  внутри  нашего  класса  APickupItem.  И  это 
мы обсудим далее.  
Далее  мы  осуществляем 
AAvatar::Pickup
,  что  добавляет  объект  типа 
APickupItem
  в 
рюкзак аватара: 
 


213 | 
С т р а н и ц а
 
 
void AAvatar::Pickup( APickupItem *item ) 

if( Backpack.Find( item->Name ) ) 

// 
предмет уже был в рюкзаке… увеличиваем его количество 
Backpack[ item->Name ] += item->Quantity; 

else 

// 
предмета не было в рюкзаке, сейчас добавляем его туда 
Backpack.Add(item->Name, item->Quantity); 
// 
записываем ссылку на текстуру, когда предмет взят первый раз 
Icons.Add(item->Name, item->Icon); 


В предыдущем коде, мы проверяем, есть ли уже подбираемый предмет у игрока. 
Если  есть,  мы  увеличиваем  его  количество.  Если  нет,  то  мы  добавляем  его  и  в 
рюкзак, и в карту Icons (значки).  
Чтобы добавить подбираемый предмет, используйте следующий код: 
avatar->Pickup( this ); 
APickupItem::Prox_Implementation 
это способ вызвать эту функцию-член.
  
Теперь,  нам  нужно  отобразить  содержимое  нашего  рюкзака  на  HUD,  когда  игрок 
нажимает I
 


Достарыңызбен бөлісу:
1   ...   196   197   198   199   200   201   202   203   ...   252




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

    Басты бет