簡単な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です。
敵の戦闘不能実装完了
今回はここまでです。
次回は「モンスタースポナーを設置する」です。
前後記事
前回の記事
・魔法に当たり判定を付ける
次回の記事
・モンスタースポナーを設置する
他の記事を探す
他の記事も気になる方は、以下の記事の目次を確認ください。