【Scratchの次】Unityでの制作の設計図としてScratchを使ってみた(実装編)

こんにちは!

今回は前回の記事の続きとして、具体的なサンプルを用いながら
取り組みを紹介していきたいと思います。

それではどうぞ!

⒊Scratchで実装するまでの準備

まず、今回用いたサンプルはこちらの公式チュートリアル【玉転がし】です。

https://unity3d.com/jp/learn/tutorials/s/roll-ball-tutorial

とてもわかりやすく説明してくれているチュートリアルなのですが、

子どもたちが一人で取り組むにはちょっと重めのボリュームです。

ということで、こちらをScratchに落とし込んでみたものがこちら。
(一部、CameraControllerは省略しています)

https://scratch.mit.edu/projects/283164272/

まずスプライトから紹介します

 

はい、これだけです!背景などはご自由に作っていただいて構いません。

次に変数です。

「機能使う?」だけ、ちょっと浮いてる感じがします。が、このままで行きます。

そして今回は定義ブロックも用意してみました。

名前はなんでもいいのですが、引数を3つ作っています。

さてさて、、、この時点で必要な知識は下記の通りになります。
それぞれクリアしてからチャレンジすると、スムーズに次のステップに進むことができます。

 

⒋プロトタイプ作成

まず、元の玉転がしのプログラムですが、チュートリアルでは

  • PlayerController.cs : 操作やアイテム取得に関するプログラム。プレーヤーである球のオブジェクトに適用する。
  • CameraController.cs : カメラがプレーヤーを追尾するプログラム。
  • Rotator.cs : アイテムが回転するプログラム。(おしゃれ)

というスクリプトファイルたちを作成します。

スクラッチにはカメラの概念がないので、2つ目のCameraControllerは今回は作りません。

まずは、比較的量の少ないクリスタルのプログラムから

赤色のクリスタルに変更し、回転するプログラムにしました。
Unityでは、「時間の経過分だけオブジェクトを回転させる」というものになります。

次にメインのプレーヤーのプログラムです。

元のプログラムはこちら。
これを参考にスクラッチで組んでみます。

まず、moveVerticalとmoveHorizontalをそれぞれ、「〜のキーが押された量」という雑な名前の変数にします。
また、speedはそのまま「速さ」として設定しています。

メッセージのブロック「スタート」は void Start()
メッセージのブロック「繰り返し」は void Update()
の意味でそれぞれ用いています。
正確には定義ブロックを用いたほうがいいのでしょうが、
今回は90分1コマで説明できるよう省略させていただきました。

 

次に

var moveHorizontal = Input.GetAxis(Horizontal);
var moveVertical = Input.GetAxis(“Vertical”)

の部分です。
Input.GetAxisは、-1から+1までの一定の範囲で数値を返します。
ちなみにHorizontalやVerticalで使うキーの設定は、Unityのメニュー > Edit > Project Settings > Input から設定できます。

今回は

-50 < 「〜のキーが押された量」 < +50

として設定しました。

続いて物理演算、移動部分です。
ここはむしろUnity側の方が設定は簡単なので、動けばいいかな…くらいでプログラムしています。

このパートで最も重要なのは
rb = GetComponent<Rigidbody>();
の説明です。

今回はGetComponentが何をしているかを考えるために、定義ブロックにon,offの機能をつけることで
「関数ごと制御する」という考え方を伝えています。

 

最後に、アイテム取得判定ですが
今回はアイテムが1つなので、メッセージで対応しています。

さて、アイテムが複数の場合はどのように実装すればよいでしょうか?
全て説明してもつまらないので、この部分はみなさんチャレンジしてみてください。

⒌Unityでの実装

具体的な実装は様々なサイトで紹介されているので今回は省略します。
先ほどのチュートリアル( https://unity3d.com/jp/learn/tutorials/s/roll-ball-tutorial )や、コガネブログさん( http://baba-s.hatenablog.com/entry/roll-ball-tutorial
はオススメです。

ここまでご覧いただいて感じた方もいるかもしれませんが、スクラッチでUnity向けに実装すると
だいぶ回り道をしているのがわかります。

ただし、この制作の目的は「作ること」ではなくあくまで「英語を克服しながらUnityの考え方を理解すること」です。
コピペでも動くものは作れますが、逆に言えば「それしか作れません」。
理解して、ぜひオリジナルの制作にも活かしていってください!

今後もScratchから他の言語へ移るためのアプローチを検証していきたいと思います。
最後に、これらの素晴らしいプラットフォームを開発されたMIT, Unity社に感謝します!

 

今回の記事につきまして、質問やお問い合わせなどありましたらお気軽にお問い合わせください!
本日もお読みいただきありがとうございました。

SNSでもご購読できます。