見出し画像

Unityのエディターのインスペクターでワールド座標を弄るやつβ版

ポジションだけは動くようにした。

ローテンションも動くようにはなった。


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

#if UNITY_EDITOR
using UnityEditor;
#endif

[ExecuteAlways]
public class TheWorld : MonoBehaviour
{
    private Vector3 lastPos;
    public Vector3 editPos;

    private Vector3 lastRot;
    public Vector3 editRot;

    void Start()
    {
#if UNITY_EDITOR
        if (!Application.isPlaying)
        {
            lastPos = transform.position;
            editPos = transform.position;

            lastRot = transform.eulerAngles;
            editRot = transform.eulerAngles;
        }
#endif
    }

    // Update is called once per frame
    void Update()
    {
#if UNITY_EDITOR
        if (!Application.isPlaying)
        {
            UpdatePos();
            UpdateRot();
        }
#endif
    }

    private void UpdatePos()
    {
        // トランスフォームを変更
        if (lastPos != transform.position) {
            editPos = transform.position;
        }

        // EditPosを変更
        if (lastPos == transform.position)
        {
            transform.position = editPos;
        }
        lastPos = transform.position;
    }

    private void UpdateRot()
    {
        // トランスフォームを変更
        if (lastRot != transform.eulerAngles)
        {
            editRot = transform.eulerAngles;
        }

        // EditRotを変更
        if (lastRot == transform.eulerAngles)
        {
            transform.eulerAngles = editRot;
        }
        lastRot = transform.eulerAngles;
    }
}

これでいいのかわからんこと

表記違うけど同じ角度問題

transform.eulerAngles をVector3に代入するとまれに数字がややこしくなる。

この記事が気に入ったらサポートをしてみませんか?