ゼロからのUnity(5)キャラクターを動かしてみよう後編:プレハブとスクリプト
skill

ゼロからのUnity(5)
キャラクターを動かしてみよう
後編:プレハブとスクリプト

2015.08.20

ent108_img01.jpg

前回はゲームオブジェクトとコンポーネントについて学びつつ、キャラクターの配置から物理演算で重力を加えるところまで作りました。

今回はUnityの基礎となるプレハブとスクリプトという概念を学びつつ、キャラクターを操作可能にするところまで進めてみましょう。

さあ、どんどんゲームっぽくなってきますよ!

賀好 昭仁

■動かないゲームオブジェクトを作ってみよう

では、早速開発に入りましょう。

前回作ったシーンを再生すると、ひよこちゃんがどこまでも落下してしまう状態になっています。
ひよこちゃんが着地できる足場を作ってみましょう。

プロジェクトブラウザで
Assets
└Sprite Pack #1 - Tap and Fly
 └Sprites
  └Background
フォルダを開き、「scene_01_blockDown」をひよこちゃんの下にドラッグ&ドロップします。ゲームオブジェクトの名前は「Block」に変えておきましょう。

ent116_img02.jpg

Blockに「RigidBody 2D」と「Box Collider 2D」コンポーネントを追加し、RigidBody 2Dの「Is Kinematic」にチェックを付けます。

ent116_img03.jpg

Is Kinematicにチェックを付けると、重力などの影響を受けることが無くなります。地面や壁などの動くべきではないゲームオブジェクトにはIs Kinematicのチェックを付けておきましょう。

プレイボタンを押すと、ひよこちゃんがブロックに着地することが確認できます。

■プレハブの作成と使い方

足場のブロックがひとつだけだと寂しいので、何個か作ってみましょう。

プロジェクトブラウザで「Assets」フォルダの中に新しくフォルダを作ります。名前は「Prefabs」にしておきましょう。
続いて、ヒエラルキーにあるBlockを、ドラッグ&ドロップでPrefabsディレクトリに入れてみます。

すると、Hierarchy内の「Block」が青文字になり、Prefabsディレクトリの中に新しくBlockが出来上がりました。

ent116_img04.jpg

Prefabsディレクトリの中に出来上がったBlockはプレハブ(Prefabs)といいます。プレハブはゲームオブジェクトの設計図で、これを使うことで同じゲームオブジェクトを量産できるようになります。

ちなみに、Hierarchyで青い文字で表示されているゲームオブジェクトは、プレハブを元に作られたものであることを表しています。

プレハブから作られたゲームオブジェクトの特徴として、大元のプレハブのプロパティを変更すると、基本的にはそのプレハブから作られたゲームオブジェクトのプロパティも連動して変わります。

ただし、全てのプロパティが連動するわけではありません。
プレハブから作ったゲームオブジェクトのプロパティを直接書き換えた場合、そのプロパティに関してのみプレハブとの連動関係が無くなります。オブジェクトの色や大きさなど、プレハブと連動させたいプロパティはゲームオブジェクト側で書き換えないよう注意しましょう。


それでは、プレハブを元にBlockを量産してみましょう。
プロジェクトビューのBlockプレハブをゲームシーンにドラッグ&ドロップしてみましょう。新しくBlockのゲームオブジェクトが出来上がりましたね。
同じ手順で何個かBlockを配置してみましょう。

ent116_img05.jpg

■スクリプトでゲームオブジェクトを動かしてみよう

次はいよいよ、ひよこちゃんを操作できるようにします。

HierarchyからHiyokoを選択し、InspectorのAdd Componentボタンを押して「New Script」を選択します。
スクリプトの新規作成フォームが表示されますので、Nameは「Hiyoko」、Languageは「C Sharp」の状態で「Create and Add」ボタンを押します。

ent116_img06.jpg

続いてプロジェクトビューのAssetsフォルダを選択すると、フォルダ直下にHiyokoという名前でC#のスクリプトファイルが出来上がっています。

ent116_img07.jpg

UnityのスクリプトファイルはC#・JavaScript・Booのいずれかの言語で書かれているプログラムで、主にコンポーネントとして頻繁に使用します。(※Booはほとんど使用されていないため、Unity5からはスクリプトリファレンス等に記載されなくなりました。Booのスクリプト自体はまだ動作しますが、いつサポートが無くなるかわかりませんので使わない方が良いでしょう。)br ゲーム開発の過程でたくさん作ることになりますので、散らからないようScriptsフォルダを作って入れておきましょう。

続いて、Hiyokoのスクリプトファイルをダブルクリックします。
すると、Unity付属のスクリプトエディタであるMonoDevelopというツールが立ち上がり、スクリプトファイルの中身が表示されます。

ent116_img08.jpg

< Hiyoko.cs >
ent116_img09.jpg

Start()メソッドはゲームオブジェクトがアクティブになった際に1度だけ呼ばれます。
Update()メソッドは毎フレームごとに実行される処理です。
今回はUpdate()メソッドを下記のように変更します。

ent116_img10.jpg

Update()の際にユーザの入力内容に応じてRigidBody 2Dの加速度(velocity)を変更したり、AddForce()で上向きの力を加える処理を行っています。


これでキャラクターを動かす準備が出来ました!
プレイボタンを押すと、ADまたは左右の矢印キーでひよこちゃんが移動、スペースキーでジャンプすることがご確認いただけましたでしょうか。

なお、スクリプトと入力に関してもっと詳しく知りたい場合は下記の公式ドキュメントを読んでみましょう。
http://docs.unity3d.com/ja/current/Manual/ScriptingSection.html
http://docs.unity3d.com/ja/current/Manual/ConventionalGameInput.html

■ まとめ

実際に手を動かしてみると、コンポーネントやスクリプトなど少々ややこしいものが登場し、難しいと感じられたかもしれません。

Unityの登場によってゲーム開発の敷居は大きく下がりましたが、それでもやはりゲーム開発には努力と根性が必要になります。
触っているうちに必ず慣れますので、引き続き頑張りましょう!


さて、ゲーム開発の進行具合を見てみますと、今回で操作できるキャラクターとブロックはできましたが、まだまだゲームとは言い難いですよね。
そう、今の状態だとルールも何もなく、ゲームとして成り立っていません。ゲームにはルールが必要不可欠なのです。

次回はゲームクリアーやゲームオーバーなど、ゲームとしての基本的なルールを加えてみることにしましょう。

原稿:賀好 昭仁
qnoteスマホアプリ開発チーム技術主任。PHP・Android・iOS・Unityなど複数のプラットフォームでの開発を行う。
しばしば7匹の先輩猫社員たちにイスを占領される。

この記事はどうでしたか?

おすすめの記事

キャリアを考える

BACK TO TOP ∧

FOLLOW