[Unity] カメラに追従するGameObjectと複製(2)

今回はカメラに追従するGameObjectと複製する方法をシェアしたいと思います。
本記事は前回の「[Unity] カメラに追従するGameObjectと複製(1)」の続きです。

Cubeオブジェクトの配置

GameObjectメニューから 3D Object > Cube を選択します。
ヒエラルキー上にCubeオブジェクトが配置されますが、この段階ではカメラに追従しません。
カメラに追従させるには、下図のようにMain Cameraオブジェクトの下の階層にCubeオブジェクトをドラッグして親子関係にする必要があります。
(Cubeオブジェクトの名称は「CameraCube」にしました)

この段階でPlayボタンを押し、プログラムを実行すると、下のように、
カメラの向きに応じてCubeオブジェクトが追従することが確認できます。

GameObjectの複製と配置座標と向きの調整

次にスペースキーを押したタイミングで、その場所にCubeオブジェクトの複製が固定されるようにします。

Assets内にScriptを新規作成します。
Script名は「DirectorScript」としました。
以下サンプルコードとなります。

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

public class DirectorScript : MonoBehaviour
{

    public GameObject originalobj;

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown("space"))
        {

            // 複製元の3Dオブジェクトのtransformを取得
            Transform myTransform = originalobj.transform;

            // 複製元の3Dオブジェクトの座標を取得
            Vector3 pos = myTransform.position;

            // 複製元の3Dオブジェクトの回転(オイラー角)を取得
            var angles = originalobj.transform.rotation.eulerAngles;

            // コピーして配置する
            GameObject copied = Object.Instantiate(originalobj, pos, Quaternion.Euler(angles)) as GameObject;
            copied.name = "copiedCube";

        }

    }

}

publicで設定しているGameObject originalobj は複製元のオリジナルオブジェクトの設定をおこないます。
今回は以下のようにoriginalobjには「CameraCube」を設定しました。

Playボタンを押し、プログラムを実行すると、下のように、スペースキーを押したタイミングで、その場所にCubeオブジェクトの複製が生成され、固定されます。

複製したCubeオブジェクトは以下のようにDestroyメソッドを使用して破棄できます。

GameObject copiedCube = GameObject.Find("copiedCube");
Destroy(copiedCube);

木曜日担当:nishida



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム