Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ ランダム生成された障害物 | Flappy Birdゲームの改良
Unityでの格闘ゲーム

bookランダム生成された障害物

メニューを表示するにはスワイプしてください

Obstacle クラスは、ゲーム内の障害物を管理し、障害物が画面外に出た際に再配置することで、継続的なゲームプレイを維持。

メソッド

Start メソッド

private void Start()
{
    lastObject = startingLastObject;
    player = FindAnyObjectByType<PlayerMVT>().transform;
}

目的: 最後の障害物の初期化とプレイヤーの Transform の取得。

仕組み: lastObject = startingLastObject;: インスペクターで指定された初期障害物を lastObject に設定。 player = FindAnyObjectByType<PlayerMVT>().transform;: FindAnyObjectByType メソッドを使ってプレイヤーの Transform を取得。

OnBecameInvisible メソッド

private void OnBecameInvisible()
{
    if (player == null) return;
    if (transform.position.x >= player.position.x) return;
    if (transform == lastObject) return;

    Vector2 position = transform.position;
    float random = Random.Range(0, 100);

    if (random <= 50)
    {
        position.y = Random.Range(-2, 1);
    }
    else
    {
        position.y = Random.Range(15, 18);
    }

    position.x = lastObject.position.x + Random.Range(6f, 10f);
    transform.position = position;
    lastObject = transform;
}

目的:障害物が画面外に出て特定の条件を満たした場合に再配置する。

仕組み: スクリプトは、プレイヤーが存在するかを確認し(if (player == null) return;)、障害物がプレイヤーの後方にあるかを判定(if (transform.position.x >= player.position.x) return;)、連続して同じ障害物が再配置されるのを防止する(if (transform == lastObject) return;)。

現在の障害物の位置を取得し(Vector2 position = transform.position;)、ランダムな数値を生成(float random = Random.Range(0, 100);)、ランダム値に応じて障害物のy座標を調整する。

その後、最後の障害物からランダムな距離だけx座標を更新し(position.x = lastObject.position.x + Random.Range(6f, 10f);)、lastObjectを現在の障害物に更新する(lastObject = transform;)。

まとめ

  • 初期化:最後の障害物を設定し、プレイヤーを検索する;
  • 再配置:障害物が画面外に出て特定条件を満たした場合、最後の障害物よりランダムな距離と高さで再配置する;
  • 条件:障害物がプレイヤーの後方にあり、同じ障害物が繰り返し再配置されないことを保証する。

この設定により、ゲーム内で障害物が継続的に出現し、プレイヤーに対して常に挑戦と多様性が保たれます。

question mark

オブジェクトが見えなくなり再配置される際、新しいy座標を決定する要素は何ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 5.  3

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 5.  3
some-alt