Unity|2Dのベルトコンベアでアイテムを運ぶ

当ページのリンクには広告が含まれています。

今回はUnity2Dで「アイテムを運ぶ簡単なベルトコンベア」を作成してみます。

はじめに

Unityのバージョンは「Unity 6000.5.2f1」です。ベルト上に乗せたアイテムを運ぶベルトコンベアを簡単に作成していきます。

下記のベルトコンベア画像を利用していきます。

作成開始

ここから実際に作成していきます。

UIの作成

まずはベルトコンベア画像をドラッグアンドドロップで任意のフォルダに入れます。

画像のImportSettingsで「PixelsPerUnitを16」、「FilterModeをPoint(nofilter)」に変更します。

画像をHierarchyにドラッグアンドドロップ、SpriteRendererのDrawModeをTiledにしてサイズを好きなサイズに変更します。

ゲーム画面が、下記の様にベルトコンベアの画像が配置されたらOKです。

コンベアで運ぶアイテムを追加します。Hierarchyで「2DObject」→「Sprites」→「Square」を追加。

名前をitemに変更してスケールを変更します。

アイテムを移動する

コンベアの配下に空オブジェクトを追加、Positionをコンベアの終点にします。

スクリプトを新規で作成、名前は「ConvBelt」。中身を下記に変更します。衝突したのがアイテムの場合、終点に移動しています。

using UnityEngine;

public class ConvBelt:MonoBehaviour
{
    public Transform point;

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (!collision.CompareTag("item")) return;

        Transform item = collision.GetComponent<Transform>();
        item.position = point.position;
    }
}

コンベアに判定用の「BoxCollider2D」を追加、オフセットを変更して始点に。スクリプトをアタッチしてパラメータに終点をセットします。

アイテムの位置を変更、「BoxCollider2D」と「Rigidbody2D」をアタッチします。「Rigidbody2DのBodyTypeはKinematic」に変更します。

実行して入り口のアイテムが終点に移動したらOKです。瞬間移動するので、ゆっくり運ぶように変更していきます。

Dotweenで移動

アイテムをDotweenを利用して移動します。Dotweenアセットのインストール方法は下記になります。

インストール後、スクリプトを下記に変更します。

using DG.Tweening;
using UnityEngine;

public class ConvBelt:MonoBehaviour
{
    public Transform point;

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (!collision.CompareTag("item")) return;

        Transform item = collision.GetComponent<Transform>();
        item.DOMove(point.position, 2f).SetSpeedBased().SetEase(Ease.Linear);
    }
}

実行して下記の様にベルトコンベアの上をアイテムが移動すればOK

コンベアを2つつなげると下記の様な感じに。

他にもいくつか方法がありますが、まずは簡単な方法で実装。ここから、ベルトコンベアの画像を動かすと運んでいる感が出ますね。

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