古典的な倉庫番パズルをUnityで作ってみたいと思います。最初の実作なので簡単なことしかしておらず、初心者向けです。使っているスクリプトやコンポーネントの解説は各記事を参照していただく形です。
Unityで技術的にどうやって作るかという記事なので、パズルの作り方については特に何も解説してません(というか、解説できません)。
成果物
![sokoban12](https://sunagitsune.com/wp-content/uploads/2021/07/sokoban12.jpg)
荷物を押してゴールまで運ぶ倉庫番パズルを作ります。
倉庫番パズルの作り方
![sokoban1](https://sunagitsune.com/wp-content/uploads/2021/07/sokoban1.jpg)
背景を透過させたpng画像を用意します。フォトショやクリスタで作れますし、ネットにも色々落ちてます。
画像はドラッグなどでアセット化し、プロジェクトビューからシーンビューにドラッグするなどしてオブジェクト化します。
画像はドラッグなどでアセット化し、プロジェクトビューからシーンビューにドラッグするなどしてオブジェクト化します。
キー操作でキツネを動かすスクリプトを作成し、アタッチします。
![sokoban3](https://sunagitsune.com/wp-content/uploads/2021/07/sokoban3.jpg)
壁を配置して、コライダーを設定します。
![sokoban4](https://sunagitsune.com/wp-content/uploads/2021/07/sokoban4.jpg)
pngの場合、当たり判定が画像の有効部分を元に計算されます。コライダーのサイズの値を微調整し、
![col1](https://sunagitsune.com/wp-content/uploads/2021/07/col1.gif)
壁にぶつかった時に違和感なく止まるようにします。
![sokoban5](https://sunagitsune.com/wp-content/uploads/2021/07/sokoban5.jpg)
壁をプレハブ化し、たくさん用意します。壁の位置も数値で指定します。
![sokoban6](https://sunagitsune.com/wp-content/uploads/2021/07/sokoban6.jpg)
荷物(樽)画像をオブジェクト化し、コライダーとリジッドボディを設定します。
![sokoban7](https://sunagitsune.com/wp-content/uploads/2021/07/sokoban7.jpg)
キツネと荷物は、リジッドボディで回転を固定しておきます。
![col2](https://sunagitsune.com/wp-content/uploads/2021/07/col2.gif)
これで押せば荷物が動くようになりましたが、どこまでもツルツル滑っていってしまうので、
![sokoban8](https://sunagitsune.com/wp-content/uploads/2021/07/sokoban8.jpg)
リニアの抗力もちょっと高くしておきます。
![sokoban9](https://sunagitsune.com/wp-content/uploads/2021/07/sokoban9.jpg)
ステージを作り、ゴールを配置し、クリアの文字をオブジェクトとして置きます。
衝突した時にイベントが起こるようにメソッドを作り、
特定のオブジェクトに接触した時、「クリア」を表示するスクリプトを作って、
![sokoban10](https://sunagitsune.com/wp-content/uploads/2021/07/sokoban10.jpg)
荷物にアタッチします。キツネがゴールに触ってもクリアにならないようにしないと、めちゃくちゃ簡単なパズルになります。
If文の対象のオブジェクト名にも注意してください。
If文の対象のオブジェクト名にも注意してください。
![sokoban11](https://sunagitsune.com/wp-content/uploads/2021/07/sokoban11.jpg)
インスペクターで、変数にクリアした時表示するオブジェクトをセットします。
![col3](https://sunagitsune.com/wp-content/uploads/2021/07/col3.gif)
これでほぼ完成。
音楽を付ける
あとはおまけで簡単なBGMを付けて、自動で鳴るようにしておきます。
![music6](https://sunagitsune.com/wp-content/uploads/2021/07/music6.png)
ゲームオブジェクト同様にpublicでAudio Sourceを宣言し(変数名はaudioSourceとしました)、
![music7](https://sunagitsune.com/wp-content/uploads/2021/07/music7.png)
ヒエラルキーからオブジェクトをドラッグしてセットすると、●●オブジェクトのAudioSourceコンポーネントという形で変数に登録できるので、
![music8](https://sunagitsune.com/wp-content/uploads/2021/07/music8.png)
クリア時はaudioSource.Stop();とするだけで、BGMを止めることができます。
ビルドして公開
本作はUnityroomで公開しています(簡易倉庫番、PCのみ対応)。良かったら遊んでみてください。
![](https://sunagitsune.com/wp-content/uploads/2021/07/computer-1343393_1280-160x90.jpg)
やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。
コメント