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



Pdf көрінісі
бет179/252
Дата06.01.2022
өлшемі12,25 Mb.
#11940
1   ...   175   176   177   178   179   180   181   182   ...   252
 
 


181 | 
С т р а н и ц а
 
 
Внутри  вашего  файла  класса  NPC.h,  добавьте  следующий  код,  чтобы  объявить 
ProxSphere и UFUNCTION названную Prox: 
UCLASS() 
class GOLDENEGG_API ANPC : public ACharacter 

GENERATED_UCLASS_BODY() 
// 
Это сообщение NPC, которое он должен сказать нам. 
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = NPCMessage) 
FString NpcMessage; 
// 
Сфера, с которой может сталкиваться игрок, чтобы получить предмет 
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Collision) 
TSubobjectPtr ProxSphere; 
// 
Соответствующее тело этой функции это 
// ANPC::Prox_Implementation, __
не__ ANPC::Prox()! 
// 
Это немного странно и не то, что вы ожидали, 
// 
но это случается, потому что это BlueprintNativeEvent (родное событие схемы (blueprint)) 
UFUNCTION(BlueprintNativeEvent, Category = "Collision") 
void Prox( AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 
OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult ); 
};
 
Выглядит  немного  запутанно,  но  на  самом  деле  не  так  всё  сложно.  Здесь  мы 
объявляем дополнительную сферу объёма границ, названную ProxSphere, которая 
выявляет, когда игрок находится рядом с NPC.  
В  файле  NPC.cpp,  нам  нужно  добавить  следующий  код,  чтобы  завершить 
выявление близости: 
ANPC::ANPC(const class FPostConstructInitializeProperties& PCIP) : 
Super(PCIP) 

ProxSphere = PCIP.CreateDefaultSubobject(this, 
TEXT("Proximity Sphere")); 
ProxSphere->AttachTo( RootComponent ); 
ProxSphere->SetSphereRadius( 32.f ); 
// 
Код для запуска ANPC::Prox(), когда эта сфера приближения  
// 
пересекается с другим актором. 
ProxSphere->OnComponentBeginOverlap.AddDynamic( this, &ANPC::Prox ); 
NpcMessage = "Hi, I'm Owen";// 
сообщение по умолчанию, может быть отредактировано 
                                                 // 
в blueprint 
}  
// 
Обратите внимание! Хотя это ANPC::Prox() и было объявлено в заголовочном файле, 
// 
теперь это вот здесь ANPC::Prox_Implementation. 
void ANPC::Prox_Implementation( AActor* OtherActor, UPrimitiveComponent* 
OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & 
SweepResult ) 

// 
Здесь наш код будет выполнять то, что будет происходить 
// 
при пересечении 
}
  
 


182 | 
С т р а н и ц а
 
 


Достарыңызбен бөлісу:
1   ...   175   176   177   178   179   180   181   182   ...   252




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

    Басты бет