見出し画像

フロッガー風ゲームをUnityPraygroundでつくってみた!

こんにちは、新保です。

ゴールデンウィークがやってきました!
1日目と2日目は学校の授業や用事があったためゲームは作れませんでしたが、やっとお休みになったので作業します。

今回はフロッガー風のゲームを、UnityPlaygroundを使って作ってみました!
……といっても、半分以上は自分でコードを書いてしまいましたが。イチから作っているときとはまた違う苦労も発生し少し大変でしたが、完成させられてよかったです!


今回の企画

目標:
「WASD」と「矢印キー」で操作できるようにする
・「キーを押したら〇だけ移動する」スクリプトに対して、画面外に出ないような対策をする
・目標ポイントに到達したら、宇宙船の画像は残しつつプレイヤーを再生成する
・5か所のポイントが埋まりきったらゲームクリアにする
制限時間をつける

作業時間:
2日間(1日目2時間、2日目1時間)

お借りしたもの▼
アセット『Unity Playground』(https://assetstore.unity.com/packages/templates/tutorials/unity-learn-playground-urp-109917) 背景『ポップな宇宙の背景』OKUMONO様(https://sozaino.site/archives/7558)

やったこと

操作関連

ゲームを普段プレイしていない家族に遊んでもらいたいと考えていたので、何気に初めてWASDと矢印キーの両方に操作を対応させました。
複雑なコードを要求されているわけでもないので、これからはちゃんとどちらの操作もできるようにしていこうかな……笑

移動方法は以前作った爆弾を避けるミニゲームと同じ動きを採用しています。

今回頑張ったのは、ミニゲームを作った時には諦めてしまったプレイヤーが動ける範囲を指定するスクリプトを書くことです。これを加えることで、プレイヤーが画面外に出ることを防ぎました。

        transform.position = new Vector2(
             Mathf.Clamp(transform.position.x, -7.0f, 7.0f),
             Mathf.Clamp(transform.position.y, -3.35f, 3.35f)
             );

こちらのコードを使用しています。

ゲームクリアまでの要素作成

オレンジ色の六角形のスプライトが目標ポイントです。

・目標ポイントに到達したら、宇宙船の画像は残しつつプレイヤーを再生成する

こちらは、以下のようにコードを書きました。

    private void OnTriggerEnter2D(Collider2D collision)
    {
          Debug.Log("衝突されたオブジェクト:" + collision.gameObject.name);
          PlayerImage.SetActive(true);
          Destroy(collision.gameObject);
          GameObject playerobj = (GameObject)Resources.Load("Spaceship");
          Instantiate(playerobj, new Vector3(0.0f, -3.35f, 0.0f), Quaternion.identity);
    }

衝突されたとき(=宇宙船が目標ポイントに到達したとき)、

①スプライトの上に非アクティブにしておいたプレイヤーの画像をアクティブに
②衝突してきたプレイヤーのゲームオブジェクトを破壊
③プレイヤーのゲームプレハブを読み込み
④初期位置に生成

という流れを行ってもらっています。

オブジェクト生成の部分は、侍エンジニア様のこちらの記事を参考にさせていただきました。ありがとうございます!

・5か所のポイントが埋まりきったらゲームクリアにする

こちらは「.activeSelf」を使って実現させました。
宇宙船の画像を5枚表示させたらクリア、ということにしているので、既に到達したことのある目標ポイントに行ってもクリアできないようになっています。「これはいい方法を見つけたぞ!」と喜びましたね笑

最後まで読んでいただき、ありがとうございました!

今回作ったゲームに関連するリンクはこちらです!
YouTube:https://youtu.be/xp_mBIf7qLE

また次回の記事でお会いしましょう!


この記事が気に入ったらサポートをしてみませんか?