こんにちは! エンジニア見習いの大樹です!

今回は立体迷路作りをやっていこうと思います。

例のごとくこちらのサイト様にお世話になります。
 【第六回】立体迷路を作ろう(Unity入門)|OpenBook

ルールとしてはとても単純で十字キーでボールを操作してゴールまで到達させるだけです。
でしたらどういうスクリプトが必要になってくるのでしょうか?
と思いページをスクロールしてみたところ2つほどしかありませんでした!
ではいったい何の為の制作なのでしょうか...

ともあれ今はやってみることが大事なので取り掛かっていきましょう!


早速枠組み作りですね。
ササッとやってしまいましょう!

ん...?

ポジション等の数値が記されていない... ヒントは完成図のみ!?
なるほど、理解しました。
ひよこ本の時から思っていましたが、
ステージ作りにおいてオブジェクトの大きさや設置位置の指定があったからこそサクサクなのであって、指定が無ければ苦労するだろうと...
今回は割とアドリブに近いので苦労しそうですね...
c6e1ef932348120fc1072c8bb0b78c2a
と、まあとりあえずここまで作ってみました。
数値を計算しながらInspectorに入力してcubeを配置していったのですが吐きそうでした。
これはプログラミング能力とはまた別の設計力が必要な作業ですね...
計算が苦手な僕には結構こたえます...
身近なことで言うとイラストを模写するときなどに使う頭でしょうか。

見本と全く一緒のスケールにはなりませんでしたがもうここは妥協してしまいましょう。

続けて橋の設置を行います。
c461b11ac07fa9f27c61e97e3b622614
何とかそれっぽくなりました。
正直これは数値を使用して設置するのはあまりにも苦だったのでマウス操作も含めて行いました。
でも新たに道が見えてきました。
マウス操作である程度位置を決めてそこから数値でビシッと決める。
これです!
この方法だとあまり頭を使わずに済む!
とはいったものの完璧な計算にはやはり精度は及びませんが...

それから坂と障害物のボールの設置です。
977574acb04e24db97164fb48ab237a5
同じやり方で出来ましたが坂が少し厄介でした。
傾けては大きさを調整→納得いかず→傾けては...
と何度も繰り返す形になってしまいました。

それとは別に変な枠みたいなものが追加されていますね。
これはBoxColliderを利用して作成した見えない壁です。
ボールを操作している際に下へ落下することを防ぐために設置しました。
ということはですね... 落下してしまう場所は全部カバーしてあげなくてはならなかったのですよ...

うーん 禿げそう!

でしたが後半に差し掛かった時にはもう完全に頭が作業脳へ突入していましたので苦ではありませんでした。

ここからあと少し見えない壁を設置して完成形ができました!
7744c696712921be6517c0f64cac5559
ついでに色が微妙だったので変えてしまいました。
こっちの色もイマイチというご意見に関しましては僕は耳を塞ぎ続けることに致します。笑
加えてゴールが解り易いように右下に自作のオブジェクトを設置しておきました。
デザインが稚拙というご意見にk...(略

いえ、ご意見を真摯に受け入れる姿勢は大事ですよね! 失礼しました。


苦しい思いもしましたがステージ作りはなんとか完走できました!
いくら苦しいとは言っても慣れればそれほどでも無いとは思いますが、それはあくまでこのレベルでの話だからではないでしょうか...
一般にリリースされているゲームを思い出すと果てしない道が見え隠れしていますね...
ゲーム開発者の方々の偉大さを実感しました。


ここからはスクリプト制作になります。
今回は少ないのでいつもとは違いサクっと終わりそうです。
まずは一つ目、プレイヤーを動かすためのスクリプトです。
プレイヤー
5、6行目で、キーボードの十字キーの入力を受け付けるようにさせる。
7行目で、移動方向を指定。
2行目で宣言した速度の変数と、移動方向を掛け合わせるというのが9行目。

こんな感じの働きだそうです。
今回は結構解り易かったが故に自分がスクリプトに強くなったと錯覚して慢心しそうでしたがなんとかブレーキをかけました。


あとはゴールに設置したオブジェクトにゴール判定を付与してスクリプト終了です。
ゴール判定
たったのこれだけでした!
ボールがオブジェクトに接触した際にゲームクリアシーンへ移動するよう記述しています。

はい
これでスクリプト終了と言いましたが勝手にゲームクリア画面とタイトル画面も作ってしまいました。
前回の記事で現状はまず模倣に集中しようと言う方針を掲げましたが、探求心と好奇心に打ち勝つことが出来ませんでした。
クリア
タイトル
タイトル補足
スクリーンショットには写っていませんが今回は初の試みでゲーム終了ボタンもスクリプトで作ってみました。
ゲームには必須の機能ですね。
初とは言ったものの「Application.Quit()」を使用するだけでしたので特に難しいことはありませんでした!
一つ新しい記述を覚えました!


こんな感じで完成としましょうか!
ついでにテクスチャを使って少し豪華にしてみました。
faa617fc0fe660ae33d67f2d348bcddd
以前大苦戦した山の描写機能を積極的に駆使していきました。
相も変わらず下手くそだったのですがこの使い方ならそれっぽくてバレないのではないでしょうか。


今回もゲームを書き出しておきましたので皆さんにも遊んでいただければ嬉しいです!
 プロジェクト大樹_Ver.0.0.3


制作時間が
スクリプト<オブジェクト作成
と今までと比較すると今回は異例なパターンでしたね。
吐きそうな場面も多々ありましたが学べることは色々とありました!
スクリプトも掘り下げるのは得策ではないとは思っていましたが意外と出来てしまうこともあるみたいなので、今後思いついたことはやはり調べていこうと思います。
自分でやりたいことを調べて目的が達成された瞬間には充実感を覚えます。

ここのところ慢心ではなく成長している実感が得られているのでとても楽しく制作出来ています!
引き続き次回からも頑張っていきたいと思います!

ではまた次回お会い出来たらと思います!