09 「玉転がし」Roll a Ball – Pick Upの作成

Pick Upの作成

プレイヤーが収集するためのPickUpゲームオブジェクトを作成します。

収集可能なゲームオブジェクトの作成

PickUpゲームオブジェクトを作成、Transform値の設定、マテリアルを作成します。

1. PickUpゲームオブジェクトの作成

Hierarchyビューで「右クリック > 3D Object > Cube」の順番に選択しCubeのオブジェクトを作成します。

作成したCubeオブジェクトの名前を「PickUp」に変更します。

2. PickUpゲームオブジェクトのTransform値の設定

PickUpゲームオブジェクトのTransform値を以下の値でそれぞれ設定します。

  • Position(Y: 0.5)
    • ※X,Yはプレイヤーの位置と重ならないように調整してください。
  • Rotation(X: 45, Y: 45, Z: 45)
  • Scale(X: 0.5, Y: 0.5, Z: 0.5)

3. PickUpマテリアルの作成

ProjectビューのMaterialsフォルダーを表示します。

Projectビューで「右クリック > Create > Material」の順番に選択しマテリアルを作成し、名前を「PickUp」に変更します。

マテリアルの色を黄色に設定します。黄色にするにはRGB値を(R: 255, G: 200, B: 0)に設定します。

ProjectビューのPickUpマテリアルをSceneビューのPickUpゲームオブジェクトにドラック&ドロップします。

PickUpゲームオブジェクトを回転させる

Rotatorスクリプトを作成しPickUpゲームオブジェクトを回転させます。

1. Rotatorスックリプトの作成

HierarchyビューのPickUpゲームをオブジェクトを選択します。

Inspectorビューの「Add Component > New Script」の順番に選択し、スクリプト名を「Rotator」にします。

Projectビューに表示されているRotatorスクリプトをルートのAssetsフォルダーからScriptsフォルダーに移動させます。

ProjectビューのRotatorスクリプトをダブルクリックしてエディターで開き編集します。

2. PickUpゲームオブジェクトの回転処理の作成

Update関数の中でPickUpゲームオブジェクトを回転させる処理を追加します。また、Start関数は使用しないので削除します。

using UnityEngine;

public class Rotator : MonoBehaviour
{
-    // Start is called once before the first execution of Update after the MonoBehaviour is created
-    void Start()
-    {
-        
-    }
-
-    // Update is called once per frame
    void Update()
    {
+        // フレームレートに合わせて指定された量だけ、X,Y,Z軸上でオブジェクトを回転させる
+        transform.Rotate(new Vector3(15, 30, 45) * Time.deltaTime);
    }
}

PickUpゲームオブジェクトをプレハブにする

PickUpゲームオブジェクトをプレハブに変換し、プレハブ編集モードの開始と終了をします。

1. PickUpゲームオブジェクトをプレハブに変換

ProjectビューのAssetsフォルダで「右クリック > Create > Folder」の順番で選択しフォルダを作成します。

フォルダ名を「Prefabs」に変更します。

HierarchyビューのPickUpゲームオブジェクトをProjectビューのPrefabsフォルダにドラック&ドロップします。

2. プレハブ編集モードの開始と終了

ProjectビューのPrefabsフォルダにあるPickUpプレハブをダブルクリックし、プレハブ編集モードを開きます。

通常のSceneビューに戻る場合は、Hierarchyビューの上部にある戻る矢印を選択します。

PickUpゲームオブジェクトを配置

プレイエリアにPickUpゲームオブジェクトを配置します。

1. PickUpゲームオブジェクトの空の親ゲームオブジェクトを作成

Hierarchyビューで「右クリック > Create Empty」の順番で選択肢、空のゲームオブジェクトを作成します。

作成した空のゲームオブジェクトの名前を「PickUp Parent」に変更します。

PickUp ParentゲームオブジェクトのTransformの値をリセットします。

HirarchyビューのPickUpゲームオブジェクトをPickUp Parentゲームオブジェクトにドラック&ドロップします。

2. Sceneビューをトップビューに合わせる

Sceneビューの右上にあるギズモを選択しトップダウンビュー(緑色の矢印をクリックする)に切り替えます。

プレイエリア全体が見えるように少しズームアウトします。

プレイエリアにPickUpゲームオブジェクトを配置する前にSceneビューのツールハンドルをローカル座標ではなくグローバル座標に設定してください。グローバル座標に設定すると、選択したオブジェクトの回転に関係なく、Sceneビューのツールは常に同じ方向を向きます。これにより、PickUpゲームオブジェクトをX,Zは平面に沿って移動しやすくなります。

3. プレイエリアの周囲に複製したPickUpゲームオブジェクトを配置

HierarchyビューにあるPickUpゲームオブジェクトを好きな場所に移動させます。

HierarchyビューのPickUpゲームオブジェクトを選択した状態で、Ctrl + D(Mac: Cmd + D)で複製します。

複製したPickUpゲームオブジェクトを移動ツールで好きな場所に配置させます。

この手順を繰り返して、プレイエリアにPickUpゲームオブジェクトを好きな数配置してください。

4. ゲームテスト

ゲームをテストするとPickUpゲームオブジェクトが障害のように動作していることに気づきます。次回はこのPickUpゲームオブジェクトを収集できるようにします。

最終スクリプト

Rotator.cs

using UnityEngine;

public class Rotator : MonoBehaviour
{
    void Update()
    {
        // フレームレートに合わせて指定された量だけ、X,Y,Z軸上でオブジェクトを回転させる
        transform.Rotate(new Vector3(15, 30, 45) * Time.deltaTime);
    }
}