PlayMakerを使った初めてのゲーム作り③ 玉転がしゲームをつくってみる(前編)

「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」と変更します。

GameObjectを作成

GameObjectを作成

床面の作成

3D Object > Planeを選択し床を作成します。

inspectorからPosition(0,0,0)、Scale(2,1,2)とし、名前を「Ground」に変更します。

Position(0,0,0)、Scale(2,1,2)と設定

Position(0,0,0)、Scale(2,1,2)と設定

床面にマテリアルを設定しましょう。

Projec上で右クリック、Create > Materialsとマテリアルを作成し、名前を「GroundMaterial」と変更します。

Create > Materialsとマテリアルを作成

Create > Materialsとマテリアルを作成

マテリアルのinspectorを開き、Albedoの右側の四角から色を設定します。

Albedoの右側の四角から色を設定

Albedoの右側の四角から色を設定

作成したマテリアルをGroundにドラッグ&ドロップして設定完了です。

画像では青にしましたが、マテリアルは好きな色に設定しましょう。

壁の作成

このままではこの後作成するプレイヤー(球)が落下してしまうので、ステージの枠に壁を作りましょう。

3D object > Cube とキューブを作成し、名前を「Wall」と変更します。

キューブを作成

キューブを作成

床面と同じようにマテリアルを設定します。

マテリアルを作成し、名前を「WallMaterial」と変更しましょう。

inspectorから好きな色に設定します。

WallのTransformを画像のように変更します。

Transformを設定

Transformを設定

[Ctrl]+[D]でWallを3つ複製します。

Wallを複製

Wallを複製

それぞれの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を作成し、ボールを赤色にしました。

Spheheを作成しマテリアルを変更

Spheheを作成しマテリアルを変更

BallにRigidbodyを追加

物理エンジン(Rigidbody)を使用してリアルなボールの動きにします。

BallのInspectorを開き、Add Componentから「Rigidbody」を追加します。

Add Componentから「Rigidbody」を追加

Add Componentから「Rigidbody」を追加

BallにFSMを追加

Ballを選択した状態でPlayMakerエディタを開き、FSMを追加します。

FSMを追加

FSMを追加

FSM名をBallControllerと変更します。

FSM名をBallControllerと変更

FSM名をBallControllerと変更

変数の定義

アクションで使用する変数をあらかじめ定義しておきます。

FSMのVariablesタブを開き、New Variableに変数名を入力すると変数を追加できます。

画像のように5つの変数を定義し、Variables Typeも変更します。

5つの変数を定義

5つの変数を定義

rbの詳細設定

変数rbを選択し、詳細設定画面のObject TypeをUnityEngine > Rigidbodyに変更します。(下の方にあるので、矢印でスクロールしましょう。)

rbの詳細設定画面

rbの詳細設定画面


スクロールしてRigidbodyを選択

スクロールしてRigidbodyを選択

speedの詳細設定

変数rbを選択し、詳細設定画面のValueを10にします。

またInspectorにチェックします。

詳細設定画面でValueを10

詳細設定画面のValueを10

チェックをすると、BallのInspectorにspeedが追加され、ボールに速度が出るようになります。

今回は速度の値を10としましたが、数字を大きくするとボールが速く移動するようになるので、好みで変えてみましょう。

Initステート設定

State1のステート名を「Init」に変更します。

ステート名を「Init」に変更

ステート名を「Init」に変更

アクションブラウザからInitステートに「Get Component」アクションを追加します。

Get Componentアクションはオブジェクトに設定されているConponentを取得できます。

Store ComponentのNoneをクリックして、先ほど定義しておいた「rb」を指定します。

「rb」を指定

「rb」を指定

なお、一度だけ実行されれば良いので、Every Frameへのチェックは不要です。

Movingステート設定

新しいステートを作成し、名前をMovingに変更します。

Movingステートを作成

Movingステートを作成

Get Axisアクション設定

Get Axisアクションを2つ追加します。これは軸を取得アクションで、今回は水平方向と垂直方向の軸を取得します。

Axis Nameにはそれぞれ「Horizontal」、「Vertical」と入力します。(一字一句正確に入力する必要があるので注意しましょう)

Storeにはそれぞれ、先ほど定義したmoveHorizontal、moveVerticalを指定します。

毎フレーム計算する必要があるため、Every Frameにチェックを入れます。

Get Axisアクションの設定

Get Axisアクションの設定

Set Vector3 XYZアクション設定

Set Vector3 XYZアクションを追加します。

このアクションはベクトルのX座標、Y座標、Z座標を設定し、変数に代入するアクションです。

今回はXとYにGet Axisアクションで取得したmoveHorizontalとmoveVerticalを設定し、それをmovement変数に代入しています。

画像のように数値や変数を設定します。忘れずにEvery Frameにチェックも入れましょう。

Set Vector3 XYZアクションの設定

Set Vector3 XYZアクションの設定

Vector3 Multiplyアクション設定

Vector3 Multiplyアクションを追加します。

Vector3 Variableをmovement、Multiply Byをspeedに指定し、Every Frameにチェックを入れます。

movementにspeedが掛け合わされたので、speedの値を変更するとボールの速度も変わるようになります。

Vector3 Multiplyアクションの設定

Vector3 Multiplyアクションの設定

Add Forceアクション設定

最後にAdd Forceアクションを追加します。

これはRigidbodyコンポーネントを持つオブジェクトに、力を加えるという物理演算のアクションです。

画像のようにmovementをベクトルに指定すると、そのベクトルに力が加わるようになります。

Add Forceアクションの設定

Add Forceアクションの設定

InitからMovingステートへの遷移

Initステートを選択し、FINISHEDイベントを追加します。

FINISHEDイベントからMovingステートに遷移をつなぎます。

Movingステートに遷移をつなぐ

Movingステートに遷移をつなぐ

これでキー入力でボールが移動するようになりました。

MainCameraのTransformを画像のように変更して、ゲームを再生してみましょう。

MainCameraのTransform設定

MainCameraのTransform設定


キー入力で移動

キー入力で移動

ゲームの基盤となるボールの移動ができるようになりました。

次回はアイテムを設置して、ボールでアイテムを収集できるようにしましょう!

 

当記事はユニティ・テクノロジーズ・ジャパン合同会社様の【Unity道場 2017】PlayMakerによる初めてのUnityプログラミングのスライド内容を改変して使用しております。