こんにちは、shiguregakiです!
ゲーム制作やARに興味があったので、Unityを少しずつ勉強しています。
先日、「Unityの教科書 Unity 2019完全対応版 2D&3Dスマートフォンゲーム入門講座」を読み終え、チョー基礎ですがUnityでのゲーム作りの流れを学ぶことができたと思っています。
せっかくなので、ここで1つのゲームを一から作ってみようと思い、「3D玉転がし」ゲームを作ることに決めました!
目次
どうして3D玉転がし?
ゲームを作るのなんて初めてなうえ、Unityもチョー初心者なので、程よく難しいゲームは無いかといろいろと思案していました。。。
ふと、小学校の図工の時間に玉転がしゲーム作ったなあという記憶が降りてきて、これなら作れそう!ってことで挑戦することにしました。
玉転がしゲームのイメージは ↓ みたいな感じ
玉転がしゲームB(ビー玉あそび)
Amazon 楽天
ゲームの設計を考える
せっかくなんで、「Unityの教科書 Unity 2019完全対応版 2D&3Dスマートフォンゲーム入門講座」で紹介されている流れで設計したいと思います。
ゲームの企画を作る
玉転がしゲームを文章にするとすると、
- ビー玉をばね付きの棒で押し出して飛ばす
- ビー玉が転がるステージ上に釘が打ちつけられており、ビー玉は釘や外枠に衝突しながら落下していく
- ステージの途中に得点が入るような得点スポットがあり、ビー玉がそこに入ると得点が入る
- ビー玉が一番下まで落ちたら無得点となる
こんな感じでしょうか?
イメージは上の玉転がしの画像で想像がつくのではないでしょうか。
ここにゲーム性を持たせるために、以下を追加しようと思います。
- 制限時間をつける
- ビー玉に種類を作る
- 「青色のビー玉」は記載通りの得点が入る
- 「赤色のビー玉」は5倍の得点が入る
- 「黒色のビー玉」はどこかの得点スポットに入ったら、現得点が半分になる(一番下まで落下させられば半分にはならない)
- ゲーム開始シーン、ゲーム中シーンを作成する
画面上のオブジェクトをすべて書き出す
玉転がしの画像を良く観察して、、、オブジェクトとしては
- ビー玉(青、赤、黒)
- ばね
- ビー玉を押し出す棒(押し出し棒)
※以下、押し出し棒と呼ぶことにします - 釘
- 得点スポット
- 外枠
- ポイントや制限時間を表示させるUI
- ゲーム開始シーン
- ゲーム中シーン
があるかと思います。
オブジェクトを動かすためのコントローラスクリプトを決める
上記のなかで動くオブジェクトは
- ビー玉(青、赤、黒)
- ばね
- 押し出し棒
があるかと思います。
そのため、コントローラとしては
- ビー玉コントローラ
- ばねコントローラ
- 押し出し棒コントローラ
が必要かと思います。
なお、ビー玉を操作する共通のビー玉コントローラを作成し、青、赤、黒の種類はタグで判断するようにしたいと思います。
オブジェクトを自動生成するためのジェネレータスクリプトを決める
ゲームプレイ時に生成されるオブジェクトとしては
- ビー玉(青、赤、黒)
があるかと思います。
そのため、ジェネレータとしては
- ビー玉ジェネレータ
が必要かと思います。
ビー玉コントローラと同様で、ビー玉の種類はタグで判断しようと思います。
UIを更新するための監督スクリプトを用意する
UIやシーンの遷移があるので、
- UI操作用の監督
- シーン遷移用の監督
が必要かと思います。
スクリプトを作る流れを考える
「Unityの教科書 Unity 2019完全対応版 2D&3Dスマートフォンゲーム入門講座」を参考にすると、コントローラ⇒ジェネレータ⇒監督って流れだったので、以下のような流れになるのではないかと思います。
- 押し出し棒コントローラ
- ばねコントローラ
- ビー玉コントローラ
- ビー玉ジェネレータ
- UI操作用の監督スクリプト
- シーン遷移用のスクリプト
各スクリプトのイメージは以下です。
押し出し棒コントローラ
プレイヤが画面下方向にスワイプして、指を離した箇所の距離によってばねで加速させてビー玉を押し出すようなスクリプトを作成します。
ばねコントローラ
押し出し棒から押されたら収縮し、プレイヤが押し出し棒の指を離したら、ばねが伸びて押し出し棒を加速させるようなスクリプトを作成します。
ビー玉コントローラ
ビー玉を画面下方向に向かって移動させます。
ビー玉がステージの下部に来たらビー玉を破棄します。
青、赤、黒色のビー玉はタグによって判断します。
ビー玉ジェネレータ
ビー玉を押し出し棒の上に生成します。
生成する条件としては押し出し棒とビー玉が触れていない時間が1秒以上たったらにします。
青、赤、黒色のビー玉の生成割合はゲームの進行状況に合わせて変化させます。
UI操作用の監督スクリプト
制限時間と得点の管理を行います。
得点スポットにビー玉が入ったら、ビー玉の種類によって得点を変更します。
制限時間が終了したら、取得した得点を大きく表示させます。
シーン遷移用のスクリプト
ゲーム中シーンで制限時間後にタッチがあったらゲーム開始シーンに遷移します。
ゲーム開始シーンでタッチがあったらゲーム中シーンに遷移します。
ゲームを作る流れを考える
「Unityの教科書 Unity 2019完全対応版 2D&3Dスマートフォンゲーム入門講座」では、プロジェクトの作成からすぐにスクリプトの作成をしていましたが、今回はその前に以下のような作業が必要と考えています。
- 実現方法の検討
- ばねの動きの出し方
- ビー玉の動きの出し方
- デザインの検討
- ビー玉のデザイン
- ばねのデザイン
- 押し出し棒のデザイン
- 釘のデザイン
- 外枠のデザイン
- 得点スポットのデザイン
- ゲーム開始画面のデザイン
- デザインの作成(必要あれば)
- 自分好みのデザインがなければ作らないといけないです。
これらを踏まえて、ゲームの作る流れとしては以下となるのではないかと思います。
- 実現方法の検討
- デザインの検討
- デザインの作成(必要あれば)
- プロジェクトの作成
- 外枠の作成
- 操作部分(押し出し棒、ばね)の動作作成
- ビー玉の動作作成
- ステージ(釘や得点スポット)を作成
- Prefabを作る
- 監督スクリプトの作成
とりあえず、今後の方針
ざっくりですが、「Unityの教科書 Unity 2019完全対応版 2D&3Dスマートフォンゲーム入門講座」に紹介されていたゲーム作成の手順を参考に「3D玉転がし」の設計をしてみました。
今後検討や製造するなかで考慮漏れがあるかと思いますが、まずは以下の流れでゲームを作成していこうと思います。
- 実現方法の検討
- デザインの検討
- デザインの作成(必要あれば)
- プロジェクトの作成
- 外枠の作成
- 操作部分(押し出し棒、ばね)の動作作成
- ビー玉の動作作成
- ステージ(釘や得点スポット)を作成
- Prefabを作る
- 監督スクリプトの作成
関連動画
次の工程
前の工程
最初の工程です!
全行程
広告
Unityを初めて勉強するなら「Unityの教科書 Unity 2019完全対応版 2D&3Dスマートフォンゲーム入門講座」がオススメです!
全くUnityが分からなかった状態でも概要を理解することができました。
Unityの教科書 Unity 2019完全対応版 2D&3Dスマートフォンゲーム入門講座
Amazon 楽天
以上!
コメント