UE5.3を使用したゲーム制作備忘録を作成中!

モバイル向けゲームを作るため日々奮闘中!
同じ悩みを持つ人たちの、解決の糸口になれば幸いです。

詳細はこちら
PR
スポンサーリンク

Unreal Engine コツコツ自習_敵の戦闘不能を実装する【2Dゲーム】

UEコツコツ自習シリーズ
スポンサーリンク

簡単な2Dゲームを作ろう

2Dゲーム制作の練習シリーズです。

アンリアルエンジンで2Dゲーム制作方法をまとめていきます。

説明を省略したり、細かな数値設定などの説明をしない場合もありますので、ご参考程度で確認ください。

※作業環境:UEバージョン5.3.2 Windows11 VSCode

敵の戦闘不能を実装

魔法が敵に当たったときに、敵を倒せるようにしていきます。

敵を倒したら、その位置で停止させ戦闘不能マークに変更します。

戦闘不能マークを準備する

敵を倒したことを示す「Paper Flipbook」を準備します。

「Paper Flipbook」の作成方法は、以下の記事を参考にしてください。

敵が倒れたときの処理を追加する

敵を倒したときの処理を追加していきます。

Enemy.h

「public:」内にプロパティを追加します。

	UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
	UPaperFlipbookComponent* EnemyFlipbook;

// 追加↓
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UPaperFlipbook* DeadFlipbookAsset;
// ここまで↑

関数も追加します。

	virtual void Tick(float DeltaTime) override;

// 追加↓
	void Die();
// ここまで↑

};

Enemy.cpp

追加した関数を定義します。

// 関数定義
void AEnemy::Die()
{
	if (!IsAlive) return; // 敵が生きていない状態なら、ここで処理を終わる(重複処理防止用)

	IsAlive = false; // 敵を倒したことを示す
	CanFollow = false; // 敵の追跡モードをオフにする

	EnemyFlipbook->SetFlipbook(DeadFlipbookAsset); // 敵のアニメーションを倒したマークにする
	EnemyFlipbook->SetTranslucentSortPriority(1); // 倒したマークの表示優先順番を設定する
}

魔法が当たったときの処理を追加する

魔法が敵に当たったときに、敵を倒す処理を追加していきます。

Magic.cpp

void AMagic::OverlapBegine(UPrimitiveComponent* OverlapperComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
	AEnemy *Enemy = Cast<AEnemy>(OtherActor);
	if (Enemy && Enemy->IsAlive)
	{
		DisableMagic();
// 追加↓
		Enemy->Die();
// ここまで↑
	}
}

コードが編集できたので、保存してリフレッシュ&コンパイルします。

敵のブループリントを設定する

「BP_Enemy」を開いて、「Details」の「Enemy」に「Dead Flipbook Asset」が、追加されていることを確認します。

対応するコード

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UPaperFlipbook* DeadFlipbookAsset;

「Dead Flipbook Asset」に、倒したときの「Paper Flipbook」を設定します。

これで設定完了です。

テストプレイして、魔法が当たったときに絵が変わればOKです。

敵の戦闘不能実装完了

今回はここまでです。

次回は「モンスタースポナーを設置する」です。

前後記事

他の記事を探す

他の記事も気になる方は、以下の記事の目次を確認ください。

タイトルとURLをコピーしました