広告あり

Unreal Engine コツコツ自習_魔法に当たり判定を付ける【2Dゲーム】

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

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

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

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

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

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

魔法に当たり判定を付ける

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

コードを編集する

Magic.h

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

	UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
	bool IsLaunched = false;

// 追加↓
	UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
	bool IsDisabled = false;
// ここまで↑

関数も追加します。

	void OnDeleteTimerTimeout();

// 追加↓
	UFUNCTION()
	void OverlapBegine(UPrimitiveComponent* OverlapperComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);

	void DisableMagic();
// ここまで↑

};

OverlapBegine()関数は、何かと接触したときの処理です。

DisableMagic()関数は、魔法を消す処理です。

Magic.cpp

インクルードを追加します。

#include "Magic.h"

// 追加↓
#include "Enemy.h"
// ここまで↑

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

// 関数定義
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(); // 魔法を消す
	}
}

// 関数定義
void AMagic::DisableMagic()
{
	if (IsDisabled) return; // 魔法を消す処理に入っていれば、ここで処理を終わる(重複処理させないため)

	IsDisabled = true; // 魔法を消す処理中を示す
	SphereComp->SetCollisionEnabled(ECollisionEnabled::NoCollision); // コリジョンの反応をオフにする
	MagicFlipbook->DestroyComponent(); // 魔法を消す
}

「AMagic::BeginPlay(){}」内に「OverlapBegine()」をセットします。

void AMagic::BeginPlay()
{
	Super::BeginPlay();

// 追加↓
	SphereComp->OnComponentBeginOverlap.AddDynamic(this, &AMagic::OverlapBegine); // 接触処理をセットする
// ここまで↑

}

「On Component Begine Overlap」ノードと、同じ処理になります。

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

テストプレイする

テストプレイして、敵に魔法を当てます。

魔法が敵に当たって消えたらOKです。

魔法当たり判定実装完了

今回はここまでです。

次回は「敵の戦闘不能を実装する」です。

前後記事

他の記事を探す

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

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