Unity(canvas_world)

Unity

ワールド空間にキャンバスを配置してみよう。

手順

1.原点にキューブを作成する。

2.キューブを右クリックしてUI–>TEXTを作成する。

3.canvasの設定

4.Textの設定

5.Cubeをプレファブ化し、ヒエラルキーからは削除する

6.CubeGeneratorスクリプトを以下のように作成

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

public class CubeGenerator : MonoBehaviour
{
    public GameObject prefab;
    
    void Start()
    {
        for(int i = 1; i <= 9; i++) {
            for(int j = 1; j <=9; j++) {
                GameObject cube = Instantiate(
                   prefab,
                   new Vector3(j , 9- i, Random.Range(-10f, 10f)),
                   Quaternion.identity
                   );
                cube.GetComponent<Renderer>().material.color = Color.cyan;
                //子要素の検索GetChildにわたすインデックスはヒエラルキーの並び順の上から0,1,2...
                cube.transform.GetChild(0).GetChild(0).GetComponent<Text>().text = i*j + "";
            }
        }
    }
}

7.CreateEmptyから空オブジェクトを作成しCubeGeneratorとリネーム。
その後CubeGeneratorスクリプトをアタッチ。
最後にCubeプレファブを登録する。

8.カメラの調整。
以下のようにカメラのトランスフォームを調整する。

9.実行してみよう。Cubeがz軸のみランダムに配置されている。

10.CubeControllerスクリプトを以下のように作成する。

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

public class CubeController : MonoBehaviour
{
   
    void Update()
    {
        Vector3 dist = transform.position;
        dist.z = 0;
        transform.position = Vector3.Lerp(transform.position, dist, 1.5f * Time.deltaTime);

        //transform.position = Vector3.MoveTowards(transform.position, dist, 4f * Time.deltaTime); 
    }
}

11.プレファブのCubeにアタッチ

12.実行してみよう。Lerpの効果によってキレイに所定の場所に収まるのがわかる。

13.コメントアウトされているVector3.MoveTowardsとの動きの違いも確認しておくこと。

コメント

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