完全挫折
数日あがいていたシューティングチュートリアルだが、いよいよもってどうにもならなくなってしまった。
敵キャラクターにダメージアニメーションをつけるチュートリアルにて、どこで間違ったのか、後半なにがなんだかわからなくなってしまった。で、今までのページであれば、ソースプログラムを一から見直して(場合によっては一から入力しなおして)復活したりもしたのだが、アニメーション関係のメニューを色々といじってしまたのは、元々がどうなっていたのかを参照する事もできないし、元に戻る事も出来なくなってしまった。
2時間ほど試行錯誤したのだが、残念ながら今のおれの能力では、これはもう修復不可能になってしまったようだ。
他のチュートリアルに手を出すか、それとも、これはもう意地だが、このチュートリアルを頭からすべてやり直してみるか……。
悩ましいところだ。
右往左往しすぎ
このチュートリアルを始めたとき、「そうか~。最近のプログラムだと、単純な2Dシューティングの移動にも、物理演算するのかー」、なんて、驚きながら従っていたのだけれど、チュートリアル後半に来て、様々な処理とバッティングしたりするので、すなおに座標をいじるだけの処理に変更された。うーむ……。
このチュートリアルは、筆者の試行錯誤を追体験する感じて、学習させようとしているのかな?
でも、結果的には、なんだかえらく無駄な行程をいかされている気がしてならない。
もっとシンプルに、必要最低限のシンプルなやり方で進めてほしい、というのは単におれの好みの問題なのかな。
あと、「補足」的な内容が、本文と同じレベルで記載されてくるのは、素人には非常にわかりづらいなあ。
当たり判定とか
主人公に当たり判定をつけるのだが、チュートリアルには「x=0.06,y=0.06のサイズにしましょう。4ドットのサイズになります」と書かれているのだが、おれの環境だと4*4の16ドットの範囲になってしまう。ここまでのサイズ設定等で何か間違っていたのだろうか。まあ、当たり判定の大きさなんて、あとでなんとでもできるからとりあえずそのまますすめる。
当たり判定とか、「キャラクタの座標と当たり判定の高さや幅を足したり引いたりして色々やる」もんだと思ってたけど、図形を描いたら細かい事は勝手にやってくれるみたい。
敵キャラクタが画面外に出たら削除という処理を行うのだが、このチュートリアルだとBoxCollider2Dというのを使って行う。一見「便利そうだな」なんて思ったのだが、それに付随して、「そのままだと主人公のオブジェクトもすぐDestroyされてしまうから、Layerの調節をしてほにゃら~」とか、いろいろな処理が必要とされててめんどくさい事このうえない。
「敵が画面外に出たら削除」ってだけで、よさそうに感じるのだけれど。
ま、これはチュートリアルという事で、「ゲームを完成させる」事とともに「いろいろな機能を学ぶ」必要があるから、あえて色々な事をやっているのだろうけど……。
それとも、近代のゲーム製作というのは、こういうふうにシステム的にやるのが作法だったりするのだろうか。保守性とかいろんな事情があるのだろうな。
傾向と対策
ここで挫折してしまうのは悲しいので、もう少しだけ頑張ってみる。
前回、なぜなにがなんだかわからなかくなってしまったのかというと、おそらくおれなりの傾向と対策が逆におかしな方向に進んでしまった感じなのだと思う。
ここまでやってきて、おれはこのチュートリアルを、「説明不足」と感じているので、様々なところで「これは、こういう事をやろうとしているのだろう」と、その傾向に対して、あるていど予測をまじえて理解する事で進めてきたのだが、今回の章(敵を作成しよう)ではその予測がまったく別方向になってしまった。
表題に「敵を作成しよう」と書かれているので、てっきり「敵を作成する」章なのだと思い、ここで作成した「Spaceship.cs」は敵キャラクタにアタッチするプログラムだと思ったのだが、これをいきなりPlayerにアタッチしたりして、何が何だかわからなくなった。
この章で行ったのは、『敵の作成』ではなく、『プレイヤーと敵をプログラムする。その際、プレイヤーのみのプログラム、敵のみのプログラム、共通のプログラムを作成し、プレイヤーには「プレイヤーのみのプログラム+共通プログラム」、敵キャラクターには「敵のみのプログラム+共通プログラム」をアタッチする』という事だったのだ。
まあ、考えてみると、「いきなり順番に進めるのではなく、その章をざっと読んで、おおまかな流れを理解してから、精読する」というのは、ものごとを理解する基本なのに、それができてなかったんだなあ、と反省。
あと、コルーチンというのが、わかったようなわからんような、微妙な理解状況。やってりゃ慣れるかな。
シューティングゲームがつくりたい
とりあえず、シューティングゲームがつくりたい。と、思った。
理由は簡単そう・単純そうだから。短絡的にそう思ったのは、テレビゲーム黎明期にたくさんつくられていたのがシューティングゲームだからその他のゲームジャンルは、さほど考えなくても、大変そうな理由が思い浮かぶ。
- RPG>>シナリオとか考えるのが大変
- アドベンチャーやノベルゲーム>>絵を描かなきゃいけない(描けないし)
- アクションゲーム>>当たり判定とかめんどくさそう
- レースゲーム>>物理演算とか、頭が悪いから理解できない
- 音ゲー>>曲を書かなきゃいけない(作曲なんてできないし)
もちろん、面白いシューティングゲームをつくろうとしたら、そりゃ並々ならぬ苦労があるだろうけど、なにもおれは面白いシューティングゲームなんてつくろうとはしていないのだ。クソゲーでもかまわない。というか、おれがつくったってクソゲーにしかならないだろう。
でも、それでいい。おれはただ、自分でゲームがつくれたら、それだけで満足なんだ。
はじめてのUnityを終了し、次に用意されているのが偶然にも2Dシューティングだった。おあつらえ向きじゃないか。
というか、おれの予想と同じく、きっと簡単なのだろう。
ちょっとだけ進めてみる。
相変わらず、おれ的には非常に読みづらいが、ひとまず主人公のスペースシップが表示される所までは進んだ。キャラクタの切り出しとか、全部ツール内でできてしまう。Unity、なんと便利なツールである事か。
勿論おれにはこんなちゃんとしたスペースシップを描く技術などなく、このグラフィックはチュートリアルのファイルにそのまま含まれていた。
キャラクターのグラフィックくらい、自分で用意しなくちゃならないと思っていたが、おれ的には上向きの三角形(△)でいいや、と思っていたのだけれど。至れり尽くせりだなあ。
はじめてのUnity 終了
はじめてのUnityをいちおう完了。あまり理解できていないのでもう一度最初から繰り返してみようかな、とか思う。
ただ、最終ページに
※なお、Unity 5.5現在シーンをロードした際に画面が薄暗くなるバグが発生するかもしれません。
問題が発生した場合、以下の手順を行って下さい。
- メニュー>Window>Lightingを選択
- autoのチェックを外す
- Buildボタンをクリック
なんて、対処法が載っているのだけれど、現行バージョンではメニューの位置が違うのか、書かれている通りに対処することができなかったりする。うーん……。
すでに現行バージョン(Unity5.6)とはズレが出ているようなので、ほかのチュートリアルを探したほうがいいのかな。
しかしUnityって、メジャーバージョンアップでもないのに、チュートリアルレベルの操作すら変わっちゃうんだなあ。こりゃ、解説書買うときも注意しなくちゃだなあ