Unityでシューティングゲームを作ろう!
ということで記事を書いていたのですが、それのまとめです。
Unityを勉強した!という方や勉強し直そう!という方の参考になればと!
- Day1《ゲームオブジェクトの配置》
- Day2《オブジェクトの自動生成》
- Day3《OnTriggerEnter2D》
- Day4《ライフを減らす処理》
- Day5《列挙型で場合分け》
- Day6《キーボード入力》
- Day7《ゲームの内容を拡張》
- Day8《音と画面遷移》
- まとめ
Day1《ゲームオブジェクトの配置》
1日目はゲームオブジェクトを配置しています!
今回作るのはシンプルなゲームです。
なので全体像も初めから想定できます。
なので、何が必要でどう置くかと言うのを
あらかじめ作って置くことでその後の実装がスムーズにいくと思います!
やはりある程度構想を持ってスタートするのは大事ですね。
途中で変更があるにしても常に「設計図」を意識するのが重要と思います!
www.inoichan.com
Day2《オブジェクトの自動生成》
シューティングゲームということで
敵がどんどん上から出てくるようにしました。
そのためにプレハブ化してインスタンス化するという
基本的な技術を使っています。
これはどんな本でも重要事項として扱われているので
押さえておきたいポイントですね!
インスタンス化したオブジェクトの親オブジェクトを指定するとかも
地味に大切なことなのかもしれないです。
www.inoichan.com
Day3《OnTriggerEnter2D》
接触判定をする技術!
OnTriggerEnter2DとOnCollisionEnter2Dの2種類あったんですが
OnTriggerEnter2Dで今回は実装しています!
それぞれの概要を理解するのはそんなに難しく無いです!
ただ使い分けはまだまだわからないですね…
その辺はこれからたくさん実装していって
使い分けできるようになりたいですね!
www.inoichan.com
Day4《ライフを減らす処理》
敵が自分に当たった時にライフを減らす処理です!
OnTriggerEnter2Dで接触判定をしたあと
実際ライフを減らす処理をするために
関数を作ってます。
こまめに関数にしていくの大事ですね。
www.inoichan.com
Day5《列挙型で場合分け》
列挙型というものをつかって
ゲームの状況を場合分けしました!
つまり、
「いまはゲームプレー中なので敵が出てくる!」とか、
「いまはゲームオーバ中なので特定のボタンを押したらコンテニューできる」など
ある局面に応じて操作を限定したい時、今はどの場面かを決めるために使いました!
自分の中でも、それぞれの状態でどういう操作ができるようにするかを整理できるので、
場合分けしたい場合は使うと便利だなと思いました!
www.inoichan.com
Day6《キーボード入力》
スマホゲームを作る上でとりあえずパソコン上でためしたい
ってときに画面に配置したボタンをいちいち押していたら
全然うまくプレーできないんですよねー。
そもそも二つ同時に押せないですし!
そんな時は、パソコンのキーボードのボタンを
それぞれのアクションを紐づけます!
これはめっちゃ簡単です!
シミュレーションようにすぐにでも導入できますよ!
www.inoichan.com
Day7《ゲームの内容を拡張》
ここまではゲームのコア機能を実装していたのですが
これまでの技術を駆使して拡張しました!
使ってる方法は同じなのに
それを駆使することでかなりそれっぽくなりますね!
コアの部分を頑張って作っておけば、
ちょっとづつ変えるだけでゲームの複雑性が増しますよ!
www.inoichan.com
Day8《音と画面遷移》
最後はSound Effect(SE)と画面遷移です!
音はフリー素材を取ってきました!
・BGMとしてずっと鳴らす方法
・特定の処理が起きた時に鳴らす方法
この2種類を実装しました!
これも型どうりに進めていくと簡単に実装できます!
画面遷移はゲームの体裁を整えるためには絶対必要ですよね!
というか最初はボタンとゲーム遷移だけでそれっぽいゲームできたりしそうですし。
これも本当に実装は簡単で
SceneManagerを使うだけ!
初めて作る場合はすぐにでも覚えて起きたい機能ですよね!
www.inoichan.com
まとめ
シューティングゲームの作り方を8日にかけて
ブログに書いたのをまとめてみました。
初めてゲーム作りをする方の参考になればと!
もし何か質問があれば気軽にどうぞ!
あと、
「お前下手くそだな!もっといい実装方法あるのに!」とか
「その実装方法間違ってるよ!危ない方法だよ!」などなど
ありましたら教えていただけると幸いです!!!