簡単な2Dゲームを作ろう
2Dゲーム制作の練習シリーズです。
アンリアルエンジンで2Dゲーム制作方法をまとめていきます。
説明を省略したり、細かな数値設定などの説明をしない場合もありますので、ご参考程度で確認ください。
※作業環境:UEバージョン5.3.2 Windows11 VSCode
徐々に敵を増やす
敵の数が一定だと難易度が簡単なので、時間経過と共に敵の出現数を増加させていきます。
スポナーのコードを編集する
「EnemySpawner」のコードを編集していきます。
EnemySpawner.h
「public:」内にプロパティを追加します。
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float SpawnDistance = 400.0f;
// 追加↓
UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
int TotalEnemyCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int DifficultySpawnInterval = 10;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float SpawnTimeMinimumLimit = 0.5f;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float DecreaseSpawnTimerByEveryInterval = 0.05f;
// ここまで↑
EnemySpawner.cpp
「AEnemySpawner::SpawnEnemy(){}」内にコードを追加します。
FVector EnemyLocation = GetActorLocation() + FVector(RandomPosition.X, 0.0f, RandomPosition.Y);
AEnemy *Enemy = GetWorld()->SpawnActor<AEnemy>(EnemyActorToSpawn, EnemyLocation, FRotator::ZeroRotator);
// 追加↓
TotalEnemyCount += 1; // カウントを1増やす
if ((TotalEnemyCount % DifficultySpawnInterval) == 0) // カウントが10ずつ増えるごとに
{
if (SpawnTime > SpawnTimeMinimumLimit) // 生成時間が限界短縮時間より大きければ
{
SpawnTime -= DecreaseSpawnTimerByEveryInterval; // 生成時間を短縮する
if (SpawnTime < SpawnTimeMinimumLimit) // 生成時間が限界短縮時間より小さくなった場合
{
SpawnTime = SpawnTimeMinimumLimit; // 限界短縮時間にする
}
StopSpawning(); // 敵生成を一度止めて
StartSpawning(); // 更新した生成時間で敵生成開始
}
}
// ここまで↑
}
保存して、コンパイルします。
ブループリントを編集する
「BP_EnemySpawner」を開きます。
「Details」の「Enemy Spawner」の項目を確認します。
対応するコード
UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
int TotalEnemyCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int DifficultySpawnInterval = 10;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float SpawnTimeMinimumLimit = 0.5f;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float DecreaseSpawnTimerByEveryInterval = 0.05f;
今回は、下の写真のように変更します。
保存して、テストプレイします。
時間が経過するごとに、敵の出現スピードが上がっていればOKです。
敵の増加実装完了
今回はここまでです。
次回は「スコア機能を実装する」です。
前後記事
前回の記事
・モンスタースポナーを設置する
次回の記事
・スコア機能を実装する
他の記事を探す
他の記事も気になる方は、以下の記事の目次を確認ください。