【Unity入門】シューティングゲームをBolt化してみよう(1/6)

ロケットの左右移動

Posted by 51n1 on 6 Dec, 2020

もくじ

  1. ロケットの左右移動
  2. ミサイルの発射
  3. 障害物の発生と移動
  4. ミサイルに衝突判定を付ける
  5. スコアを更新する
  6. ゲームオーバ処理

おもちゃラボ【Unity入門】60分で作るシューティングゲーム

上記リンクのウェブサイトで公開されているUnity入門チュートリアルを使って学習する。ちょっと古いけれどUnityの基本的な機能を見るにはちょうど良いと思う。チュートリアルを進めていく中でC#スクリプトの作成が必要な場合はC#スクリプトを使わずにBoltを使う。学習環境は、Unity 2019.4バージョンとする。

当ブログ記事ではチュートリアルを進めながら、C#スクリプトの代わりにBoltで作成した処理について記録した。少し長くなってしまったので6つのチャプターに分けることにした。Bolt以外の部分はチュートリアルに従って作成しているので特に記載していない。必要な場合は上記オリジナルのチュートリアルを参照頂きたい。

ロケットの左右移動

ロケットの左右移動処理をプログラムとして追加するところでチュートリアル最初のC#スクリプトが登場するだろう。ここでC#スクリプトの代りにBoltを使うのだが、まずはBoltをPackage Managerからインポートする必要がある。Boltのインポート手順は「 Boltをインストールする」で紹介しているので参考にしてほしい。

キー入力を取得する方法はいくつかあるが、チュートリアルのInput.GetKeyを使う方法で作成してみる。C#スクリプトを作成してスクリプトコンポーネントを追加する代わりにまずはロケットとなるRocketオブジェクトにFlow Machineコンポーネントを追加し、RocketControllerというマクロを作成する。

そして、チュートリアルに記載のC#スクリプトを参考にBoltでグラフを組み立てる。Input.GetKeyで左アローキー(←)と右アローキー(→)の押下を取得して、transform.Translateでオブジェクトを左もしくは右へ移動させる。最初に組んだBoltのグラフは以下のスクリーンショットのようになった。だが、これは失敗だった。

ロケットの左右移動処理を追加したFlow Graph

左アローキー(←)の判定後、処理フローをそのまま右アローキー(→)の判定に繋げてしまったので、左アローキーの判定がTrueでないと右アローキーの判定処理に進まないというありえないプロセスになってしまった。

そこで、それぞれを独立した処理に修正する。Updateイベントを2つ置くというのはあまり美しくない気がしたので無理やり1つにしたが、Input.GetAxist("Horizontal")のユニットを使った方がもっとシンプルになるだろう。

Updateイベントを2つ置いたパターン。あまり美しくない。

Updateイベントを1つにしてみたパターン。

ここまでのチュートリアル進捗状況(1/6)