Quaternion を使って、オブジェクトの回転と位置を一致させる
2つのGameObjectツリーどうしの座標系を合わせるために、親要素を動かすためのメモ
/// <summary> /// Transform同時の位置と回転を合わせるために、親要素のTransformを動かす /// </summary> /// <param name="target">基準となるTransform</param> /// <param name="move">targetと一致させたいTransform</param> /// <param name="moveParent">実際に移動・回転するmoveの親となるTransform</param> void AdjusTransform(Transform target,Transform move,Transform moveParent) { //回転処理 //moveのrotationが、targetのrotationと同じになるようにするための差分のクオータニオンを取得 //差分のquotanionを取得するには、逆のクオータニオンを掛ける var requiredRot = target.rotation * Quaternion.Inverse(move.rotation); //親オブジェクトを回転させる場合は requiredRotに対して、markerParent.transform.rotationをかける moveParent.transform.rotation = requiredRot * moveParent.transform.rotation; //移動処理 //親要素を軸に回転すると、子要素の位置は、ずれている。そのため回転実施後に位置の差分計算を行う var requiredPos = target.position - move.position; //targetとmoveの位置を合わせる moveParent.transform.position += requiredPos; }