いのいち勉強日記

VR・ブロックチェーン・機械学習そのあたりに興味を持ってプログラミング勉強してます!テクノロジー系で面白いの見つけたらまとめます!!他にも読んだ本の感想や勉強したこともまとめていこうと思ってます!

【Unity】シューティングゲームを作ってみよう!《Day 1》GameObjectをコードで動かす!

初のオリジナルゲーム作成に挑戦です!

今回挑戦するのは、シューティングゲームです!

作成記録1日目をまとめていきます!

 

 

最終目標的に作りたいゲームの雰囲気

 

まずはじめに完成形をIllustratorでつくってみました!

 

f:id:sys-bio:20180325234350p:plain

どういうゲームかと言いますと、

「赤、青、緑の三種類の敵弾が上から落ちてきます。

 それを大砲で狙撃していくゲームです。

 しかし、敵は同じ色の弾でしか倒せません。

 下のツールバーの三色の弾は押した色の弾が出てきます。

 また、弾が茶色のところに当たるとライフが減り、3回当たるとゲームオーバー。

 もしくは、大砲に直接当たると即ゲームオーバーです。

 敵を同じ色の弾で倒すか、敵と同じように上から落ちてくる

 コインを大砲で取るとスコアが上がって行きます。」

といったゲームを目標にしています!!!

 

このゲームを作るポイントの予想は、

「同じ色の弾でしか敵を倒せない」ってところかなと思ってます。

Colliderとかをうまく使いこなせたらできると信じてます!

 

ゲーム作り1日目

 

オブジェクトの配置

 

まずはUnityを立ち上げてプロジェクトを2D作成し開発画面へ!

とりあえず、ネットでできるようにするために

プラットフォームはWebGLにしました。

そして、オブジェクトを配置!

敵球と攻撃用球、大砲、背景、茶色のツールバー、GameManagerです!

最終目標は三色の敵球と弾を作りますが、

混乱しないようにまずは一色だけ作ることにしました。

f:id:sys-bio:20180326000049p:plain

中央下の黒い筒が大砲なのですが、

その後ろに赤色の弾が隠れています!

配置の重ね順ですが、基本は「Order in Layer」でいいと思うのですが、

Canvasとかを作ってややこしくなってしまったので、

#Sceneの2Dボタンを押して横から確認しました。

f:id:sys-bio:20180326002019p:plain

絶対もっとちゃんとしたやり方があると思うのですが、

とりあえず目的の重ね順にはなりました!

 

Scriptを作成

 

次に必要なスクリプトファイルを作成して

それぞれのオブジェクトに関連づけました。

今回は3つのスクリプトファイルを作成しました。

  • 「GameManager」
    ゲーム全体をコントロールします。
    GameMangerに関連づけました!
    点数の加算や弾や敵の生成はこれでコントロールします。

  • 「BulletManager」
    弾が生成されたら上に飛んでいくようにします。
    敵との接触判定とかも入ると思います!
    (まだそこまで判断する実力がないです・・・)

  • 「EnemyManager」
    敵球が生成されたら下に動くようにします!
    こちらも球との接触判定が入ると思われます…!

 

Rigidbody2DとCollider

 

次に球と敵球にRigidbody2DとCircleColliderのコンポーネントをつけました。

このままだと両方重力に従って落ちていってしまいますので、

「Body Type」は「Kinematic」にしました。

これで重力で勝手に落ちていきません!

 

弾と敵を動かすコード

最後に球と敵を動かすためにそれぞれのスクリプトに

コードを書いていきました。

内容はほとんど同じで

Start関数でRigidbody2Dのコンポーネントを取得して

FixedUpdate関数でRigidbody2Dの「velocity」を使って

それぞれの方向に動くようにしました!

これで弾と敵球がそれぞれ動いてくれました!

 

 

まとめ

とりあえず弾と敵球が動かせるようになったので

次回はPrefab化して

「弾はボタンを押したら」

「敵球はどんどん上からでてくる」

というのを実装してみようと思います!

 

最後まで読んでくださった方ありがとうございました。

もっといい実装方法があればぜひ教えてください!

 

 


【スポンサーリンク】