facebook twitter hatena line email

「Unity/3d/回転」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(オブジェクト内の子オブジェクトのグローバル座標が、0となるように、親オブジェクトを動かす方法)
(オブジェクト内の子オブジェクトのグローバル座標が、0となるように、親オブジェクトを動かす方法)
行18: 行18:
 
GameObject childObj = GameObject.Find("Child").transform.gameObject;
 
GameObject childObj = GameObject.Find("Child").transform.gameObject;
 
GameObject parentObj = GameObject.Find("Parent").transform.gameObject;
 
GameObject parentObj = GameObject.Find("Parent").transform.gameObject;
parentObj.transform.position = new Vector3(
+
Vector3 parentPointLocalPosition = parentObj.transform.InverseTransformPoint(childObj.transform.position);
    childObj.transform.position.x,
+
parentObj.transform.localPosition = parentPointLocalPosition;
    -childObj.transform.position.y,
+
parentObj.transform.rotation = childObj.transform.rotation;
    childObj.transform.position.z
+
    );
+
parentObj.transform.rotation = childObj.transform.localRotation;
+
 
</pre>
 
</pre>
 
オブジェクトのstaticにチェックが入っていると動かないので、注意。
 
オブジェクトのstaticにチェックが入っていると動かないので、注意。

2024年5月12日 (日) 01:20時点における版

transform.localRotation = new Vector3(0, 0.5f, 0); //こちらでなく
transform.localRotation = new Quaternion(0, 0.5f, 0, 0); // こちらでもなく(x, y, z, w)
transform.localRotation = Quaternion.Euler(0, 0, 180f);// こちらを(x, y, z) 0 ~ 360fまで

参考:https://spi8823.hatenablog.com/entry/2015/05/31/025903

角度を追加する

本来の角度に180度を追加

enemyObj.transform.localRotation *= new Quaternion(0f, 180f, 0f, 0f);

360度表記の角度取得

transform.localRotation.xではなく、transform.localEulerAngles.x

オブジェクト内の子オブジェクトのグローバル座標が、0となるように、親オブジェクトを動かす方法

GameObject childObj = GameObject.Find("Child").transform.gameObject;
GameObject parentObj = GameObject.Find("Parent").transform.gameObject;
Vector3 parentPointLocalPosition = parentObj.transform.InverseTransformPoint(childObj.transform.position);
parentObj.transform.localPosition = parentPointLocalPosition;
parentObj.transform.rotation = childObj.transform.rotation;

オブジェクトのstaticにチェックが入っていると動かないので、注意。