「PlayMaker」の概要・インストール方法・使い方からPlayMakerを使ってUnityで簡単なゲームを作ってみようシリーズ③の記事です。
PlayMakerはUnityで使用するプログラミング言語(C#)を学習しなくても、Unityコンテンツ/VRコンテンツを簡単に作成することができます。
STYLYと組み合わせて使用することによって、VRコンテンツも作ることもできるので、簡単なゲームを作りながら覚えていきましょう!
前回はPlayMakerの基本操作について紹介しました。もし分からないことがあれば、こちらを参考にしてください。
本記事から実際にPlayMakerを使って簡単なゲームを制作していきます。
今回はボールをキー入力で移動できるようにして、ゲームの基盤を作っていきましょう。
事前準備
UnityのプラグインであるPlayMakerをあらかじめインストールしておきましょう。
はじめてPlayMakerを使用する人は、あらかじめ以下の記事を一読することで、理解を深められます。
作成するゲーム
今回と次回の記事で制作するゲームのイメージです。
ボールをキー入力で操作し、アイテムを12個取得するという玉転がしゲームを作っていきます。
サンプルシーンはこちらで体験できます。
なお、これはUnity公式の無料チュートリアル「玉転がしゲーム(Roll-a-ball)」をPlayMakerで作成したものです。
このゲームを作成することで、UnityやPlayMakerでのゲームづくりの基本を理解できます。
ステージの作成
GameObjectの作成
まずGameObjectを作成し、名前を「MiniGame」と変更します。
床面の作成
3D Object > Planeを選択し床を作成します。
inspectorからPosition(0,0,0)、Scale(2,1,2)とし、名前を「Ground」に変更します。
床面にマテリアルを設定しましょう。
Projec上で右クリック、Create > Materialsとマテリアルを作成し、名前を「GroundMaterial」と変更します。
マテリアルのinspectorを開き、Albedoの右側の四角から色を設定します。
作成したマテリアルをGroundにドラッグ&ドロップして設定完了です。
画像では青にしましたが、マテリアルは好きな色に設定しましょう。
壁の作成
このままではこの後作成するプレイヤー(球)が落下してしまうので、ステージの枠に壁を作りましょう。
3D object > Cube とキューブを作成し、名前を「Wall」と変更します。
床面と同じようにマテリアルを設定します。
マテリアルを作成し、名前を「WallMaterial」と変更しましょう。
inspectorから好きな色に設定します。
WallのTransformを画像のように変更します。
[Ctrl]+[D]でWallを3つ複製します。
それぞれのTransformを以下のように変更します。Scaleはすべて(1,1,19)
Name | Position | Rotation |
Wall | 9.5 , 0.5 , 0.5 | 0 , 0 , 0 |
Wall(1) | -9.5 , 0.5 , -0.5 | 0 , 0 , 0 |
Wall(2) | -0.5 , 0.5 , 9.5 | 0 , 90 , 0 |
Wall(3) | 0.5 , 0.5 , -9.5 | 0 , 90 , 0 |
すべて配置すると画像のように壁が完成します。
ボールの移動処理
ボールを作成し、キー(矢印キーまたはWASDキー)入力で移動できるようにします。
この処理をPlayMakerを使って実現します。
Sphereの作成
まずは3D Object > SphereからSphereを作成して、Position(0,0.5,0)とし、名前を「Ball」に変更します。
Ballにも好きなマテリアルを設定しましょう。
新たにBallMaterialを作成し、ボールを赤色にしました。
BallにRigidbodyを追加
物理エンジン(Rigidbody)を使用してリアルなボールの動きにします。
BallのInspectorを開き、Add Componentから「Rigidbody」を追加します。
BallにFSMを追加
Ballを選択した状態でPlayMakerエディタを開き、FSMを追加します。
FSM名をBallControllerと変更します。
変数の定義
アクションで使用する変数をあらかじめ定義しておきます。
FSMのVariablesタブを開き、New Variableに変数名を入力すると変数を追加できます。
画像のように5つの変数を定義し、Variables Typeも変更します。
rbの詳細設定
変数rbを選択し、詳細設定画面のObject TypeをUnityEngine > Rigidbodyに変更します。(下の方にあるので、矢印でスクロールしましょう。)
speedの詳細設定
変数rbを選択し、詳細設定画面のValueを10にします。
またInspectorにチェックします。
チェックをすると、BallのInspectorにspeedが追加され、ボールに速度が出るようになります。
今回は速度の値を10としましたが、数字を大きくするとボールが速く移動するようになるので、好みで変えてみましょう。
Initステート設定
State1のステート名を「Init」に変更します。
アクションブラウザからInitステートに「Get Component」アクションを追加します。
Get Componentアクションはオブジェクトに設定されているConponentを取得できます。
Store ComponentのNoneをクリックして、先ほど定義しておいた「rb」を指定します。
なお、一度だけ実行されれば良いので、Every Frameへのチェックは不要です。
Movingステート設定
新しいステートを作成し、名前をMovingに変更します。
Get Axisアクション設定
Get Axisアクションを2つ追加します。これは軸を取得アクションで、今回は水平方向と垂直方向の軸を取得します。
Axis Nameにはそれぞれ「Horizontal」、「Vertical」と入力します。(一字一句正確に入力する必要があるので注意しましょう)
Storeにはそれぞれ、先ほど定義したmoveHorizontal、moveVerticalを指定します。
毎フレーム計算する必要があるため、Every Frameにチェックを入れます。
Set Vector3 XYZアクション設定
Set Vector3 XYZアクションを追加します。
このアクションはベクトルのX座標、Y座標、Z座標を設定し、変数に代入するアクションです。
今回はXとYにGet Axisアクションで取得したmoveHorizontalとmoveVerticalを設定し、それをmovement変数に代入しています。
画像のように数値や変数を設定します。忘れずにEvery Frameにチェックも入れましょう。
Vector3 Multiplyアクション設定
Vector3 Multiplyアクションを追加します。
Vector3 Variableをmovement、Multiply Byをspeedに指定し、Every Frameにチェックを入れます。
movementにspeedが掛け合わされたので、speedの値を変更するとボールの速度も変わるようになります。
Add Forceアクション設定
最後にAdd Forceアクションを追加します。
これはRigidbodyコンポーネントを持つオブジェクトに、力を加えるという物理演算のアクションです。
画像のようにmovementをベクトルに指定すると、そのベクトルに力が加わるようになります。
InitからMovingステートへの遷移
Initステートを選択し、FINISHEDイベントを追加します。
FINISHEDイベントからMovingステートに遷移をつなぎます。
これでキー入力でボールが移動するようになりました。
MainCameraのTransformを画像のように変更して、ゲームを再生してみましょう。
ゲームの基盤となるボールの移動ができるようになりました。
次回はアイテムを設置して、ボールでアイテムを収集できるようにしましょう!
当記事はユニティ・テクノロジーズ・ジャパン合同会社様の【Unity道場 2017】PlayMakerによる初めてのUnityプログラミングのスライド内容を改変して使用しております。