Unityでミニゲーム「玉転がし」を作成。収集品(アイテム)を設置【Roll-a-Ball.04】

前回までに「地面」と「玉」を作成。玉を操作できるようにして、カメラと壁を設定しました。とりあえず何となく動くものが出来たので、ここからはゲームっぽくしていきます。

収集物(アイテム)の設置

拾うアイテムみたいなものを設置していきます。玉を動かしてアイテムに触れると消えるという感じですね。

オブジェクトの追加

まずは3Dオブジェクトのキューブを追加。

名前をPickUpに変更。Transformの値を下図のように変更。

下図のようにオブジェクトが追加されます。

アイテムが動くように設定

追加したオブジェクトをアイテムっぽく変更していきます。PickUpの「コンポーネントを追加」から「新しいスクリプト」を選択。名前を「Rotator」に。

出来上がったRotatorスクリプトを開いて下記のように変更。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Rotator : MonoBehaviour
{

    // Update is called once per frame
    void Update()
    {
        transform.Rotate(new Vector3(15, 30, 45) * Time.deltaTime);
    }
}

簡単に説明すると玉が回転するように動かしています。実際に「再生」して追加したオブジェクトがその場で回転すればOK。

地面や玉の時と同じようにマテリアルを設定してPickUpに適用しておきます。玉の色と異なる目立つ感じでOK。

アイテムを複数設置

次にこのアイテムを沢山設置します。同じアイテムを沢山設置するのはプレハブを使う便利です。

プレハブ化

Assetsフォルダ内に「Prefabs」フォルダを作成。その中にPickUpオブジェクトをドラッグ。

次に「空のオブジェクトを作成」を選び、「PickUp Parent」とします。

作成したPickUp Parentの配下にPickUpを移動。

PickUpを複製して12個作ります。

マウスで動かすこともできますが、いい感じのバランス、見た目にするにはずれないようにTransformの位置を入力して指定します。Yは垂直方向なので0.5で固定。XとZを変更して好きな位置に配置。下図は一例です。

アイテムが消えるようにする

アイテムの設置が終わったので、次はボールがアイテムに触れたら消える設定をしていきます。まずはPickUpにタグを追加。

「PickUp」タグを新規作成して、作成したPickUpをタグに設定します。

次に「PlayerController」スクリプトを開きます。一番下にFixedUpdate()があるので、その下にOnTriggerEnterの部分を追加します。8行目-15行目ですね。

    private void FixedUpdate()
    {
        Vector3 movement = new Vector3(movementX, 0.0f, movementY);

        rb.AddForce(movement * speed);
    }

    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.CompareTag("PickUp"))
        {
            other.gameObject.SetActive(false);

        }
    }
}

あとはPickUpインスペクター画面でBoxColliderのトリガーにするにチェック、Rigidbodyを追加して「is Kinematic」にチェック。

これで一度「再生」してみてボールがアイテムに当たった時にアイテムが消えればOK

次回は拾ったアイテム数をカウントする機能(スコア表示)を追加していきます。

タイトルとURLをコピーしました