[Unity] カメラに追従するGameObjectと複製(2)
- 2021年8月19日
- Unity
今回はカメラに追従する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
nishida at 2021年08月19日 10:00:53