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



Pdf көрінісі
бет220/252
Дата06.01.2022
өлшемі12,25 Mb.
#11940
1   ...   216   217   218   219   220   221   222   223   ...   252
Код для оснащения игрока мечём  
Чтобы оснастить игрока мечём через код и привязать меч к действующему лицу на 
постоянной  основе,  присвойте 
AMeleeWeapon
  экземпляр  и  прикрепите  его  на 
RightHandSocket
  после  того  как  экземпляр  монстра  инициализирован.  Мы  делаем 
это  в 
PostInitializeComponents
(),  так  как  в  этой  функции  объект  слияния  был  уже 
полностью инициализирован.  
В  файле  Monster.h,  добавьте  метод,  чтобы  выбрать  имя  класса  Blueprint  (UClass) 
для  оружия  рукопашного  боя.  Также  добавьте  крюк  для  переменной,  чтобы 
собственно хранить экземпляр MeleeWeapon, используя следующий код: 
// 
Класс MeleeWeapon, который использует монстр 
// 
Если он не установлен, то монстр использует просто рукопашную атаку 
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = MonsterProperties) 
UClass* BPMeleeWeapon; 
// 
Экземпляр MeleeWeapon (устанавливается если персонаж использует 
// 
оружие для рукопашной схватки) 
AActor* MeleeWeapon; 
Теперь, выберите блупринт BP_MleeSword в вашем классе блупринта монстра.  


248 | 
С т р а н и ц а
 
 
В  коде  С++,  вам  нужно  инициализировать  оружие.  Чтобы  сделать  это, нам  нужно 
объявить  и  осуществить  функцию  PostInitializeComponents  для  класса  Monster.  В 
файле Monster.h добавьте объявление прототипа: 
virtual void PostInitializeComponents() override; 
PostInitializeComponents запускается после того, как завершается конструктор 
объекта и все компоненты объекта инициализированы (включая конструктор 
блупринта). Так это идеальное время, чтобы проверить прикреплён ли блупринт 
MeleeWeapon к монстру или нет, и если прикреплён, сделать экземпляр этого 
оружия. Следующий код добавляется, чтобы установить экземпляр оружия в 
осуществлении Monster.cpp для AMonster::PostInitializeComponents():
 
void AMonster::PostInitializeComponents() 

Super::PostInitializeComponents(); 
// 
создаём экземпляр оружия, если блупринт был выбран 
if( BPMeleeWeapon ) 

MeleeWeapon = GetWorld()->SpawnActor( BPMeleeWeapon, FVector(), 
FRotator() ); 
if( MeleeWeapon ) 

const USkeletalMeshSocket *socket = Mesh->GetSocketByName( "RightHandSocket" );  
// 
убедитесь, что используете верное 
// 
имя сокета! 
socket->AttachActor( MeleeWeapon, Mesh ); 


}
  
Теперь  монстры  появляются  с  мечём  в  руке,  если  BPMeleeWeaon  выбран  для 
блупринта монстра.  
              
 
 
Монстры держат оружие 
 
 
 


Достарыңызбен бөлісу:
1   ...   216   217   218   219   220   221   222   223   ...   252




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

    Басты бет