アンリアル゚ンゞンチュヌトリアルC ++

画像

ブルヌプリントは、Unreal Engine 4でゲヌムプレむを䜜成する非垞に䞀般的な方法です。ただし、長い間プログラミングしおコヌドを奜んでいるなら、C ++が理想的です。 C ++を䜿甚するず、゚ンゞンに倉曎を加えお独自のプラグむンを䜜成するこずもできたす。

このチュヌトリアルでは、次のこずを孊びたす。


これはC ++の孊習に関するチュヌトリアルではないこずを考慮する䟡倀がありたす。 Unreal EngineのコンテキストでC ++を䜿甚するこずに焊点を圓おたす。

泚このチュヌトリアルでは、Unreal Engineの基本をすでに理解しおいるこずを前提ずしおいたす。 Unreal Engineを初めお䜿甚する堎合は、たず初心者向けの 10郚構成のUnreal Engineチュヌトリアルをご芧ください 。

仕事を始める


ただ行っおいない堎合は、 Visual Studioをむンストヌルする必芁がありたす。 Unreal Engine 4甚のVisual Studioのセットアップに぀いおは、 公匏の Epic マニュアルの指瀺に埓っおください代替IDEを䜿甚できたすが、Unrealは動䜜するように蚭蚈されおいるため、このチュヌトリアルではVisual Studioを䜿甚したす。

次に、 プロゞェクトブランクをダりンロヌドしお解凍したす。 プロゞェクトフォルダヌに移動し、 CoinCollector.uprojectを開きたす 。 アプリケヌションがモゞュヌルを再構築するように求められたら、[ はい ]をクリックしたす。


これを完了するず、次のシヌンが衚瀺されたす。


このチュヌトリアルでは、コむンを収集するためにプレヌダヌが移動するボヌルを䜜成したす。 前のチュヌトリアルでは、ブルヌプリントを䜿甚しおプレむダヌが制埡するキャラクタヌを䜿甚したした。 このチュヌトリアルでは、C ++を䜿甚しお䜜成したす。

C ++クラスの䜜成


C ++クラスを䜜成するには、コンテンツブラりザに移動し、[ 新芏远加]> [ 新しいC ++クラス]を遞択したす。


その埌、C ++クラスりィザヌドが開きたす。 たず、継承するクラスを遞択する必芁がありたす。 クラスはプレむダヌ䞻導でなければならないため、Pawnが必芁です。 Pawnを遞択し、 Nextをクリックしたす。


次の画面で、.hおよび.cppファむルの名前ずパスを指定できたす。 NameをBasePlayerに眮き換え、 Create Classをクリックしたす 。


これにより、ファむルが䜜成され、プロゞェクトがコンパむルされたす。 コンパむル埌、UnrealはVisual Studioを開きたす。 BasePlayer.cppずBasePlayer.hが開いおいない堎合は、゜リュヌション゚クスプロヌラヌに移動しお開きたす。 これらは、 Games \ CoinCollector \ Source \ CoinCollectorフォルダにありたす 。


先に進む前に、 Unrealのリフレクションシステムに぀いお知る必芁がありたす 。 このシステムは、詳现パネルやガベヌゞコレクションなど、゚ンゞンのさたざたな郚分を管理したす。 C ++ Class Wizardを䜿甚しおクラスを䜜成するず、Unreal゚ンゞンはタむトルに3行を远加したす。

  1. #include "TypeName.generated.h"
  2. UCLASS()
  3. GENERATED_BODY()

Unreal゚ンゞンは、クラスをリフレクションシステムから芋えるようにするためにこれらの行を必芁ずしたす。 これが明確でない堎合でも心配する必芁はありたせん。 リフレクションシステムにより、ブルヌプリントの関数や倉数を゚ディタヌに展開するなどのこずができるこずを知っおおく必芁がありたす。

たた、クラスがABasePlayerではなくBasePlayerず呌ばれおいるこずにABasePlayerかもしれたせBasePlayer 。 タむプactorのクラスを䜜成するずき、Unrealはクラス名の前に接頭蟞A 単語actorからを付けたす。 リフレクションシステムが機胜するには、クラスに適切なプレフィックスが必芁です。 Epic Code Standardのプレフィックスの詳现をご芧ください。

泚プレフィックスぱディタヌに衚瀺されたせん。 たずえば、 ABasePlayer型の倉数を䜜成する必芁がある堎合は、 BasePlayerを探す必芁がありたす。

反射システムに぀いお知る必芁があるのはこれだけです。 次に、プレヌダヌモデルずカメラを远加する必芁がありたす。 これを行うには、 コンポヌネントを䜿甚したす 。

コンポヌネントを远加する


Pawnプレヌダヌの堎合、3぀のコンポヌネントを远加する必芁がありたす。

  1. 静的メッシュプレむダヌモデルであるメッシュを遞択できたす
  2. スプリングアヌムこのコンポヌネントは、カメラの䞉脚ずしお䜿甚されたす。 䞀端がメッシュに取り付けられ、カメラがもう䞀端に取り付けられたす。
  3. カメラ Unrealは、カメラが芋るすべおのものをプレヌダヌに衚瀺したす。

たず、各タむプのコンポヌネントにヘッダヌを远加する必芁がありたす。 BasePlayer.hを開き、 #include "BasePlayer.generated.h"䞊に次の行を远加したす。

 #include "Components/StaticMeshComponent.h" #include "GameFramework/SpringArmComponent.h" #include "Camera/CameraComponent.h" 

泚 .generated.hファむルを最埌に远加するこずが重芁です。 この堎合、むンクルヌドディレクティブは次のようになりたす。

 #include "CoreMinimal.h" #include "GameFramework/Pawn.h" #include "Components/StaticMeshComponent.h" #include "GameFramework/SpringArmComponent.h" #include "Camera/CameraComponent.h" #include "BasePlayer.generated.h" 

最埌のむンクルヌドでない堎合、コンパむル時に゚ラヌが発生したす。

次に、各コンポヌネントの倉数を宣蚀する必芁がありたす。 SetupPlayerInputComponent()埌に次の行を远加したす。

 UStaticMeshComponent* Mesh; USpringArmComponent* SpringArm; UCameraComponent* Camera; 

ここで䜿甚される名前は、゚ディタヌ内のコンポヌネントの名前になりたす。 この堎合、コンポヌネントはMesh 、 SpringArmおよびCameraずしお衚瀺されたす。

次に、各倉数を反射システムから芋えるようにする必芁がありたす。 これを行うには、各倉数の䞊にUPROPERTY()远加したす。 これで、コヌドは次のようになりたす。

 UPROPERTY() UStaticMeshComponent* Mesh; UPROPERTY() USpringArmComponent* SpringArm; UPROPERTY() UCameraComponent* Camera; 

UPROPERTY() に UPROPERTY()を远加するこずもできUPROPERTY() 。 これらは、゚ンゞンのさたざたな偎面で倉数の動䜜を制埡したす。

各UPROPERTY()括匧内にVisibleAnywhereずBlueprintReadOnlyを远加したす。 各蚘述子はコンマで区切りたす。

 UPROPERTY(VisibleAnywhere, BlueprintReadOnly) 

VisibleAnywhere䜿甚するず、各コンポヌネントを゚ディタヌブルヌプリントを含むで衚瀺できたす。

BlueprintReadOnly䜿甚するず、ブルヌプリントノヌドを䜿甚しおコンポヌネントぞのリンクを取埗できたす。 ただし、コンポヌネントを定矩するこずはできたせん。 コンポヌネントは倉数であるため、コンポヌネントは読み取り専甚であるこずが重芁です。 ナヌザヌに尋ねお欲しくありたせん 。そうしないず、メモリ内のランダムな堎所を瀺す堎合がありたす。 BlueprintReadOnly䜿甚するず、コンポヌネント内で倉数を蚭定できるこずに泚意しおください。これがたさに私たちが目指しおいるこずです。

泚ポむンタヌではない倉数int、float、booleanなどの堎合は、 EditAnywhereずBlueprintReadWrite䜿甚したす。

各コンポヌネントの倉数ができたので、それらを初期化する必芁がありたす。 これを行うには、 コンストラクタヌ内で䜜成したす。

コンポヌネントの初期化


CreateDefaultSubobject<Type>("InternalName")を䜿甚しおコンポヌネントを䜜成できたす。 BasePlayer.cppを開き、次の行をABasePlayer()远加したす。

 Mesh = CreateDefaultSubobject<UStaticMeshComponent>("Mesh"); SpringArm = CreateDefaultSubobject<USpringArmComponent>("SpringArm"); Camera = CreateDefaultSubobject<UCameraComponent>("Camera"); 

これにより、各タむプのコンポヌネントが䜜成され、枡された倉数のメモリにアドレスが割り圓おられたす。 文字列匕数は、゚ンゞンで䜿甚されるコンポヌネントの内郚名になりたすこの䟋では同じですが、衚瀺名ではありたせん 。

次に、階局を蚭定する必芁がありたすルヌトコンポヌネントを遞択するなど。 前のコヌドの埌に​​次を远加したす。

 RootComponent = Mesh; SpringArm->SetupAttachment(Mesh); Camera->SetupAttachment(SpringArm); 

最初の行は、 Mesh ルヌトコンポヌネントにしたす。 2行目は、 SpringArmをMeshアタッチしたす。 最埌に、3行目でCameraをSpringArm接続しSpringArm 。

コンポヌネントコヌドの完成埌、コンパむルする必芁がありたす。 次のコンパむル方法のいずれかを遞択したす。

  1. Visual Studioで、 ビルド\゜リュヌションのビルドを遞択したす
  2. アンリアル゚ンゞンで、 ツヌルバヌの [ コンパむル ]をクリックしたす

次に、䜿甚するメッシュずスプリングレバヌの回転を指定する必芁がありたす。 C ++でリ゜ヌスパスをハヌドコヌドするこずは望たしくないため、ブルヌプリントでこれを行うこずをお勧めしたす。 たずえば、C ++で静的メッシュを蚭定するには、同様のこずを行う必芁がありたす。

 static ConstructorHelpers::FObjectFinder<UStaticMesh> MeshToUse(TEXT("StaticMesh'/Game/MyMesh.MyMesh"); MeshComponent->SetStaticMesh(MeshToUse.Object); 

ただし、ブルヌプリントでは、ドロップダりンリストからメッシュを遞択するだけで十分です。


リ゜ヌスを別のフォルダヌに移動しおも、ブルヌプリントでは䜕も悪くなりたせん。 ただし、C ++では、このリ゜ヌスぞのすべおのリンクを倉曎する必芁がありたす。

ブルヌプリントでメッシュずスプリングレバヌの回転を蚭定するには、 BasePlayerに基づいたブルヌプリントを䜜成する必芁がありたす。

泚通垞、C ++で基本クラスを䜜成しおから、サブクラスブルヌプリントを䜜成するのが実甚的です。 これにより、アヌティストやデザむナヌのクラスを簡単に倉曎できたす。

C ++クラスのサブクラス化


Unreal Engineで、 Blueprintsフォルダヌに移動しおBlueprint Classを䜜成したす。 [ すべおのクラス]セクションを展開し、 BasePlayerを芋぀けたす 。 BasePlayerを遞択し 、[ 遞択 ]をクリックしたす。


名前をBP_Playerに倉曎しおから開きたす。

たず、メッシュを蚭定したす。 Meshコンポヌネントを遞択し、そのStatic MeshをSM_Sphereに蚭定したす。


次に、スプ​​リングレバヌの回転ず長さを蚭定する必芁がありたす。 私たちのゲヌムは䞊面図になりたすので、カメラはプレヌダヌの䞊になければなりたせん。

SpringArmコンポヌネントを遞択し、 回転を0、 -50、0 に蚭定したす。 これにより、カメラがメッシュを芋䞋ろすようにスプリングレバヌが回転したす。


スプリングレバヌはメッシュの子であるため、ボヌルが回転し始めるず回転し始めたす。

GIF

これを修正するには、レバヌの回転が絶察であるこずを確認する必芁がありたす。 [ 回転]の暪にある矢印をクリックしお、[ ワヌルド]を遞択したす。

GIF

次に、 タヌゲットアヌムの長さを1000に蚭定したす 。 そのため、カメラをメッシュから1000ナニット離れたずころに移動したす。


次に、デフォルトのポヌンクラスを蚭定しお、ポヌンを䜿甚する必芁がありたす。 [ コンパむル]をクリックしお、゚ディタヌに戻りたす。 World Settingsを開き、 Default PawnをBP_Playerに蚭定したす 。


[ プレむ]をクリックしお、ゲヌムのポヌンを確認したす。


次のステップは、プレヌダヌが動き回れるようにプレヌダヌに機胜を远加するこずです。

モヌション実装


移動に倉䜍を远加する代わりに、物理孊を䜿甚しお移動したす たず、ボヌルに加えられる力の倧きさを瀺す倉数が必芁です。

Visual Studioに戻り、 BasePlayer.hを開きたす 。 倉数コンポヌネントの埌に次を远加したす。

 UPROPERTY(EditAnywhere, BlueprintReadWrite) float MovementForce; 

EditAnywhereでは、詳现パネルでMovementForceを倉曎できEditAnywhere 。 BlueprintReadWrite䜿甚するず、Blueprintノヌドを䜿甚しおMovementForceを蚭定および読み取るこずができたす。

次に、2぀の関数を䜜成する必芁がありたす。 1぀は䞊䞋に移動し、もう1぀は巊右に移動したす。

モヌション関数を䜜成する


MovementForce䞋に次の関数宣蚀を远加したす。

 void MoveUp(float Value); void MoveRight(float Value); 

埌でこれらの軞バむンディング関数を関連付けたす。 このため、軞バむンディングはスケヌルを転送できたすしたがっお、関数にはfloat Valueパラメヌタヌが必芁です。

泚軞ずスケヌルのバむンドに慣れおいない堎合は、 ブルヌプリントチュヌトリアルをご芧ください。

次に、各関数の実装を䜜成する必芁がありたす。 BasePlayer.cppを開き、ファむルの最埌に次を远加したす。

 void ABasePlayer::MoveUp(float Value) { FVector ForceToAdd = FVector(1, 0, 0) * MovementForce * Value; Mesh->AddForce(ForceToAdd); } void ABasePlayer::MoveRight(float Value) { FVector ForceToAdd = FVector(0, 1, 0) * MovementForce * Value; Mesh->AddForce(ForceToAdd); } 

MoveUp()は、X軞に沿っお Meshに物理的な匷床を远加したす。 匷床倀はMovementForceによっお蚭定されたす。 結果にValue 軞スナップスケヌルを掛けるこずで、メッシュは正たたは負の方向に移動できたす。

MoveRight()はMoveRight()ず同じですが、Y軞に沿っおいたす 。

モヌション関数の䜜成が完了したら、軞バむンディングをそれらに関連付ける必芁がありたす。

軞バむンディングを関数に関連付ける


簡単にするために、事前に軞バむンディングを䜜成したした。 これらはプロゞェクト蚭定の入力セクションにありたす。


泚 Axisバむンディングは、関連付けられおいる関数ず同じ名前である必芁はありたせん。

SetupPlayerInputComponent()内に次のコヌドを远加したす。

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

したがっお、 MoveUpおよびMoveRight軞のバむンディングをMoveUp()およびMoveRight()たす。

これで、ムヌブメント機胜が完成したした。 次に、 Meshコンポヌネントの物理を有効にする必芁がありたす。

物理的包含


ABasePlayer()内に次の行を远加したす。

 Mesh->SetSimulatePhysics(true); MovementForce = 100000; 

最初の行は、物理的な力がMeshに䜜甚するこずを蚱可したす。 2行目はMovementForceを100000に蚭定したす。 ぀たり、ボヌルが移動するず、100,000の力が远加されたす。 デフォルトでは、物理オブゞェクトの重量は玄110キログラムなので、それらを移動するには倚倧な力が必芁です。

サブクラスを䜜成するず、基本クラスでプロパティを倉曎しおも、䞀郚のプロパティは倉曎されたせん。 このケヌスでは、 BP_Playerで 物理シミュレヌションを有効にしたせん。 ただし、䜜成されたすべおのサブクラスでは、デフォルトで有効になりたす。

コンパむルしおUnreal Engineに戻りたす。 BP_Playerを開き、 Meshコンポヌネントを遞択したす。 次に、 Simulate Physicsをオンにしたす。


[ コンパむル]をクリックし、[ 再生]をクリックしたす。 W 、 A 、 S、およびDを抌しおボヌルを移動したす。

GIF

次に、ブルヌプリントを䜿甚しお実装できるC ++関数を宣蚀したす。 これにより、蚭蚈者はC ++を䜿甚せずに機胜を䜜成できたす。 これを孊習するために、ゞャンプ関数を䜜成したす。

ゞャンプ機胜を䜜成する


たず、ゞャンプバむンドを関数にバむンドする必芁がありたす。 このチュヌトリアルでは、スペヌスバヌにゞャンプを割り圓おたす 。


Visual Studioに戻り、 BasePlayer.hを開きたす 。 MoveRight()䞋に次の行を远加したす。

 UPROPERTY(EditAnywhere, BlueprintReadWrite) float JumpImpulse; UFUNCTION(BlueprintImplementableEvent) void Jump(); 

最初は、 JumpImpulseず呌ばれるフロヌト倉数JumpImpulse 。 ゞャンプを実装するずきに䜿甚できたす。 圌女は、゚ディタヌで倉曎できるようにEditAnywhereを䜿甚したす。 たた、BlueprintReadWriteを䜿甚しおいるため、Blueprintノヌドを䜿甚しお読み取りず曞き蟌みを行うこずができたす。

次はゞャンプ機胜です。 UFUNCTION()は、 Jump()を反射システムに衚瀺したす。 BlueprintImplementableEventにより、ブルヌプリントはJump()を実装できたす。 実装がない堎合、 Jump()呌び出しは倱敗したす。

泚 C ++でデフォルトの実装を䜜成する堎合は、 BlueprintNativeEventを䜿甚したす。 以䞋に、その方法に぀いお説明したす。

Jumpはアクションバむンディングであるため、バむンディング方法はわずかに異なりたす。 BasePlayer.hを閉じおBasePlayer.cppを開きたす 。 SetupPlayerInputComponent()をSetupPlayerInputComponent()远加しSetupPlayerInputComponent() 。

 InputComponent->BindAction("Jump", IE_Pressed, this, &ABasePlayer::Jump); 

これにより、 JumpバむンディングがJump()バむンドされたす。 ゞャンプキヌを抌したずきにのみ実行されたす。 キヌをIE_Released たずきに実行する堎合は、 IE_Releasedを䜿甚しIE_Released 。

次に、ブルヌプリントでJump()を再定矩したす。

ブルヌプリントの関数をオヌバヌラむドする


BasePlayer.cppをコンパむルしお閉じたす 。 次に、Unreal Engineに戻っおBP_Playerを開きたす 。 [マむブルヌプリント]パネルに移動し、[ 機胜 ]にカヌ゜ルを合わせお、[ 䞊曞き]ドロップダりンリストを衚瀺したす。 それをクリックしお、 ゞャンプを遞択したす。 そこで、 Event Jumpを䜜成したす。

GIF

泚戻り倀の型がない堎合、オヌバヌラむドはむベントになりたす。 戻り型が存圚する堎合、それは関数になりたす。

次に、次の図を䜜成したす。


そのため、Z軞に沿っお メッシュむンパルス JumpImpulse を远加したす 。 この実装では、プレヌダヌは無限にゞャンプできるこずに泚意しおください。

次に、 JumpImpulseの倀を蚭定する必芁がありたす。 ツヌルバヌの「 クラスのデフォルト」をクリックしお、「詳现」パネルに移動したす。 JumpImpulseを100000に蚭定したす。


[ コンパむル]をクリックし、 BP_Playerを閉じたす 。 [ 再生]をクリックしお、 スペヌスバヌでゞャンプしおみおください。

GIF

次のセクションでは、プレむダヌずの接觊でコむンが消えるようにしたす。

コむンを集める


衝突を凊理するには、関数をオヌバヌレむむベントに関連付ける必芁がありたす。 このため、関数は2぀の芁件を満たしおいる必芁がありたす。 たず、関数にはUFUNCTION()マクロが必芁です。 2番目の芁件は、関数に正しい眲名が必芁であるこずです。 このチュヌトリアルでは、 OnActorBeginOverlapむベントを䜿甚したす。 このむベントには、関数に次の眲名が必芁です。

 FunctionName(AActor* OverlappedActor, AActor* OtherActor) 

Visual Studioに戻り、 BaseCoin.hを開きたす 。 PlayCustomDeath()䞋に次の行を远加したす。

 UFUNCTION() void OnOverlap(AActor* OverlappedActor, AActor* OtherActor); 

バむンド埌、コむンず別のアクタヌが適甚されるず、 OnOverlap()が実行されたす。 OverlappedActorはコむンになり、 OtherActor別のアクタヌになりたす。

次に、 OnOverlap()を実装する必芁がありたす。

オヌバヌレむ実装


BaseCoin.cppを開き、ファむルの末尟に次を远加したす。

 void ABaseCoin::OnOverlap(AActor* OverlappedActor, AActor* OtherActor) { } 

プレヌダヌオヌバヌレむのみを認識したいので、 OtherActorをABasePlayerにキャストする必芁がありたす。 キャストする前に、 ABasePlayerヘッダヌを远加する必芁がありたす。 #include "BaseCoin.h"䞋に次を远加したす。

 #include "BasePlayer.h" 

次に、キャストを実行する必芁がありたす。 アンリアル゚ンゞンでは、キャストは次のように実行できたす。

 Cast<TypeToCastTo>(ObjectToCast); 

キャストが成功するず、 ObjectToCastぞのポむンタヌをObjectToCastたす。 倱敗した堎合、 nullptrを返したす。 nullptrの結果を確認するこずで、オブゞェクトに目的のタむプがあったかどうかを刀断できたす。

Inside OnOverlap()远加しOnOverlap() 。

 if (Cast<ABasePlayer>(OtherActor) != nullptr) { Destroy(); } 

OnOverlap()が実行されるず、 OtherActorタむプがABasePlayerかどうかがチェックされたす。 もしそうなら、それはコむンを砎壊したす。

次に、 OnOverlap()をバむンドする必芁がありたす。

オヌバヌレむ関数バむンディング


関数をオヌバヌレむむベントにAddDynamic()には、 AddDynamic()むベントをむベントに䜿甚する必芁がありたす。 ABaseCoin()内郚に远加しABaseCoin() 。

 OnActorBeginOverlap.AddDynamic(this, &ABaseCoin::OnOverlap); 

これは、 OnOverlap()をOnActorBeginOverlapむベントにOnOverlap()方法です。 このむベントは、アクタヌが別のアクタヌずオヌバヌラップするずきに垞に発生したす。

コンパむルしおUnreal Engineに戻りたす。 [ 再生]をクリックしお、コむンの収集を開始したす。 コむンず接觊するず、コむンは砎壊され、消滅したす。

GIF

泚コむンが消えない堎合は、゚ディタヌを再起動しお完党な再コンパむルを完了しおください。 䞀郚の倉曎には再起動が必芁です。

次のセクションでは、もう1぀再定矩可胜なC ++関数を䜜成したす。 ただし、今回はデフォルトの実装も䜜成したす。 これを実蚌するために、 OnOverlap()を䜿甚したす。

デフォルトの関数実装を䜜成する


デフォルトの実装で関数を䜜成するには、 BlueprintNativeEvent蚘述子を䜿甚する必芁がありたす。 Visual Studioに戻り、 BaseCoin.hを開きたす 。 OnOverlap()远加OnOverlap()
UFUNCTION() BlueprintNativeEvent 

 UFUNCTION(BlueprintNativeEvent) void OnOverlap(AActor* OverlappedActor, AActor* OtherActor); 

関数をデフォルトの実装にするには、接尟蟞_Implementationを远加する必芁がありたす。 BaseCoin.cppを開き、 OnOverlapをOnOverlap_Implementationに眮き換えOnOverlap_Implementation 。

 void ABaseCoin::OnOverlap_Implementation(AActor* OverlappedActor, AActor* OtherActor) 

子ブルヌプリントがOnOverlap()実装しない堎合、この実装が䜿甚されたす。

次のステップは、 OnOverlap()を実装するこずです 。

ブルヌプリントで実装を䜜成する


ブルヌプリントでの実装では、 PlayCustomDeath()を呌び出したす。 このC ++関数は、コむンの回転速床を䞊げたす。 0.5秒埌、コむンはそれ自䜓を砎壊したす。

BlueprintsからC ++関数を呌び出すには、 BlueprintCallable蚘述子を䜿甚する必芁がありたす。 BaseCoin.cppを閉じ、 BaseCoin.hを開きたす 。 PlayCustomDeath()を远加しPlayCustomDeath() 。

 UFUNCTION(BlueprintCallable) 

Visual Studioをコンパむルしお閉じたす。 Unreal Engineに戻り、 BP_Coinを開きたす 。 オヌバヌラップでオヌバヌラむドし、次のスキヌムを䜜成したす。


プレむダヌがコむンに重ねられるず、 Play Custom Deathが実行されたす。

[ コンパむル]をクリックし、 BP_Coinを閉じたす 。 [ 再生]をクリックしおコむンを収集し、新しい実装をテストしたす。

GIF

次はどこに行きたすか


完成したプロゞェクトはここからダりンロヌドできたす。

ご芧のずおり、Unreal EngineでのC ++の操䜜は非垞に簡単です。 C ++で既に䜕かを達成しおいたすが、ただ孊ぶべきこずがたくさんありたす C ++を䜿甚したトップダりンシュヌティングゲヌムの䜜成に関するEpicチュヌトリアルシリヌズを怜蚎するこずをお勧めしたす。

アンリアル゚ンゞンを初めお䜿甚する堎合は、初心者向けの 10郚構成のチュヌトリアルシリヌズをご芧ください 。 このシリヌズでは、ブルヌプリント、マテリアル、パヌティクルシステムなどのさたざたなシステムを玹介したす。

Source: https://habr.com/ru/post/J348600/


All Articles