今回はUnityでドラえもんに登場する秘密道具、ガリバートンネルをつくってみました!
そもそもなぜガリバートンネルをつくったかというと、ものを小さくする秘密道具ではスモールライトが有名ですよね。ドラえもんの映画にもよく登場しています。
有名だし、みんなにわかってもらいやすいだろうと思って、初めはスモールライトをつくろうとしたのですが、スモールライトは手に持って使う必要があるので、まだ私には作れそうにありませんでした…(笑)
なので今回は、Unity上での実装を考えて、よりつくりやすそうなガリバートンネルをつくることにしました。
なお、記事内では作成したコードの内容も公開しているので、Unityに興味がある方、自分でも作ってみたいと思った方はぜひ使ってみてください。
■ガリバートンネルをUnityでつくってみた!
知らない方のために説明しますと、ガリバートンネルとは「ドラえもん」に登場する秘密道具のことです。
このトンネルを通るだけで体が小さくすることができます。
なお、ガリバートンネルの特徴は「中に入ったもの(オブジェクト)の大きさを小さくする」なので、今回はこの機能をUnity上で再現しました。
トンネルのモデルは3DモデリングソフトのZBrushを使用し、テクスチャも貼り付けて作成しました。
モデリングに興味がある方はZBrushCoreがペンタブと一緒に買えるのでおすすめですよ!
モデルデータをUnityへインポートして、後はコーディングをがっしりやってきました。
完成したガリバートンネルはYouTubeにて公開しています。
■Unity上での設計について
動画内で動かしていた人型モデルはUnityちゃんと呼ばれるUnity公式キャラクターのモデルです。
Unityちゃんは無料で使用することができるので、初心者でも簡単にキャラクターとして動かすことができます。
以下リンクからダウンロードページへ飛べます。
さて、ここからの内容は、Unityを使ってどうやって、今回作成したガリバートンネルができたかの説明になります。
はじめに、つくりたい機能は以下のように考えました。
<ガリバートンネルの機能>
・トンネルの大きい入口から入ると体が縮んでいく
・トンネルの小さい入口から入ると体が大きくなっていく
今回はトンネル内に見えないColliderを設置し、キャラクターがそのColliderと接触すると体の大きさを変化させる設計にしました。
体の大きさの変化は、キャラクター自身の持っているパラメータ(Component)にアクセスし、体の大きさをマイフレームおきに0.8倍していくようなコードを実装しています。
体の大きさを変更する、今回の肝となるコードがこちらになります。
1 2 3 4 5 6 7 8 |
void OnTriggerStay(Collider col) { if (col.gameObject.tag == "Player") { col.gameObject.transform.localScale = col.gameObject.transform.localScale * 0.990f; } } |
トンネル内に設置した見えないコライダーに、このコードをアタッチしてトンネル内に入ってきたキャラクターの大きさをフレーム毎に0.990倍していきます。
今回つくるにあたって実装したかったけどできなかった機能もあります。
・オブジェクト同士がすり抜けないようにする
・トンネル内での体の大きさの変化を均一にする
これらは上記で説明した、見えないコライダーで接触判定する方法では難しかったです。もしくはまだ私の能力では難しいと思い、あきらめました。
オブジェクト同士がすり抜けないようにするにはコライダーをトンネルの壁面に設置すれば可能なので、トンネル内に設置する以外の方法でなら簡単に実装できそうです。
トンネル内での体の大きさの変化を均一にするには、トンネル自体のパラメータとキャラクターの大きさを関連付ける必要があったのかなと思いました。
例えば、キャラクターからRayを出して、トンネル内にいるときに、トンネルの壁面とキャラクターとの距離が一定になるようにすれば、トンネル内を移動するだけで、体の大きさを変えることができるはず。。。
Rayはまだ簡単に使えないので、次回勉強してつかってみたいですね。
© Unity Technologies Japan/UCL
■まとめ
そもそもなぜ、ガリバートンネルをつくろうと思ったかというと、以下のような思考回路になっていました。
Unityの勉強をしたい→何かつくろう→ドラえもんの秘密道具なら機能も1つの実装で済むし、結果がわかりやすいのでは?
→やってみた
実際にやってみた感想としては、機能1つといっても実装するまでに、コライダーや別スクリプトからの変数読み込みだなんだとあらゆることをググりつつなんとかつくれたって印象です。
まだまだ改善する余地もありますし、始める前では簡単につくれると余裕をこいていましたが、余裕なんて1ミリもありませんでした。。。
とはいえ、学べたことは多いです。特に今回の肝となったコライダーについては、かなり理解が深まりました。
Unityを勉強したいという方は、まずはチュートリアル等で操作方法をつかみ、そのあと自分でつくりたいものをググりつつ作ってみるのが上達のコツかもしれません。
今回は以上となります。最後まで読んでいただきありがとうございました。
Unityを勉強したい方には、Unityの教科書がおすすめです。初心者のうちは忘れてしまってもすぐに確認できるように参考書を用意しておいた方が効率がいいと思います。
Unityの教科書 Unity 2018完全対応版 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)