初のオリジナルゲーム作成に挑戦です!
今回挑戦するのは、シューティングゲームです!
作成記録1日目をまとめていきます!
最終目標的に作りたいゲームの雰囲気
まずはじめに完成形をIllustratorでつくってみました!
どういうゲームかと言いますと、
「赤、青、緑の三種類の敵弾が上から落ちてきます。
それを大砲で狙撃していくゲームです。
しかし、敵は同じ色の弾でしか倒せません。
下のツールバーの三色の弾は押した色の弾が出てきます。
また、弾が茶色のところに当たるとライフが減り、3回当たるとゲームオーバー。
もしくは、大砲に直接当たると即ゲームオーバーです。
敵を同じ色の弾で倒すか、敵と同じように上から落ちてくる
コインを大砲で取るとスコアが上がって行きます。」
といったゲームを目標にしています!!!
このゲームを作るポイントの予想は、
「同じ色の弾でしか敵を倒せない」ってところかなと思ってます。
Colliderとかをうまく使いこなせたらできると信じてます!
ゲーム作り1日目
オブジェクトの配置
まずはUnityを立ち上げてプロジェクトを2D作成し開発画面へ!
とりあえず、ネットでできるようにするために
プラットフォームはWebGLにしました。
そして、オブジェクトを配置!
敵球と攻撃用球、大砲、背景、茶色のツールバー、GameManagerです!
最終目標は三色の敵球と弾を作りますが、
混乱しないようにまずは一色だけ作ることにしました。
中央下の黒い筒が大砲なのですが、
その後ろに赤色の弾が隠れています!
配置の重ね順ですが、基本は「Order in Layer」でいいと思うのですが、
Canvasとかを作ってややこしくなってしまったので、
#Sceneの2Dボタンを押して横から確認しました。
絶対もっとちゃんとしたやり方があると思うのですが、
とりあえず目的の重ね順にはなりました!
Scriptを作成
次に必要なスクリプトファイルを作成して
それぞれのオブジェクトに関連づけました。
今回は3つのスクリプトファイルを作成しました。
- 「GameManager」
ゲーム全体をコントロールします。
GameMangerに関連づけました!
点数の加算や弾や敵の生成はこれでコントロールします。 - 「BulletManager」
弾が生成されたら上に飛んでいくようにします。
敵との接触判定とかも入ると思います!
(まだそこまで判断する実力がないです・・・) - 「EnemyManager」
敵球が生成されたら下に動くようにします!
こちらも球との接触判定が入ると思われます…!
Rigidbody2DとCollider
次に球と敵球にRigidbody2DとCircleColliderのコンポーネントをつけました。
このままだと両方重力に従って落ちていってしまいますので、
「Body Type」は「Kinematic」にしました。
これで重力で勝手に落ちていきません!
弾と敵を動かすコード
最後に球と敵を動かすためにそれぞれのスクリプトに
コードを書いていきました。
内容はほとんど同じで
Start関数でRigidbody2Dのコンポーネントを取得して
FixedUpdate関数でRigidbody2Dの「velocity」を使って
それぞれの方向に動くようにしました!
これで弾と敵球がそれぞれ動いてくれました!
まとめ
とりあえず弾と敵球が動かせるようになったので
次回はPrefab化して
「弾はボタンを押したら」
「敵球はどんどん上からでてくる」
というのを実装してみようと思います!
最後まで読んでくださった方ありがとうございました。
もっといい実装方法があればぜひ教えてください!