Playerの操作する親オブジェクトに子オブジェクトとして追従して、上下左右に移動した際に、その方向により左向きであれば左側に親オブジェクトのサイズだけずれるというスクリプトを制作して、実際に確認したのですが何故か大きくずれて表示されてしまします。
子オブジェクトを親から取り出し、親と同じ階層に配置した場合は子にしていないので追従はしませんが、原点の座標をもとに上下左右にしっかりと移動してくれます。
解決方法などご指南よろしくお願いします。
以下コードになります。
public class Weapon : MyBaseClass { public GameObject Parent; State_2DA1 state; public Vector3 Parent_Size; int tmp_dire; Vector3 vec3; // Start is called before the first frame update void Start() { Parent = GetParent();// 親オブジェクトの取得 Parent_Size = GetObjectSize(Parent);//(0.32, 0.32, 0.2) state = Parent.GetComponent<State_2DA1>(); tmp_dire = state.direction;// 親のゲーム内での方向識別データ } // Update is called once per frame void Update() { if (tmp_dire != state.direction) { tmp_dire = state.direction; // ロテート変更 vec3 = gameObject.transform.localEulerAngles; vec3.z = state.direction; gameObject.transform.localEulerAngles = vec3; // 位置変更 gameObject.transform.position = new Vector3(0, 0, 0); gameObject.transform.position = ShiftVector3(); Vector3_DebugLog(gameObject.transform.position); } } public Vector3 vec3_SV = new Vector3(0, 0, 0); int int_tmp; Vector3 ShiftVector3() { vec3_SV.x = 0; vec3_SV.y = 0; int_tmp = (state.direction <= 90) ? -1 : 1; // 座標をずらし if (state.direction == state.Left || state.direction == state.Right) { vec3_SV.x = Parent_Size.x * int_tmp; } else { vec3_SV.y = Parent_Size.y * int_tmp; } Debug.Log("vec3_SV_" + vec3_SV.x + "_" + vec3_SV.y + "_" + vec3_SV.z); return new Vector3(vec3_SV.x, vec3_SV.y, vec3_SV.z); }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。