円状を周回するオブジェクトの配置方法
円の外側にオブジェクト配置し、ゲームを起動したときに円の中点から任意に配置したオブジェクトの角度を求めその位置から移動を開始するというコードを書いたのですが任意に配置した位置とは別の位置に移動してゲームが開始されます。
C#
1コード 2 /// <summary> 3 /// 初期角度 4 /// </summary> 5 float angle; 6 /// <summary> 7 /// 中心軸 8 /// </summary> 9 [SerializeField] GameObject pivot; 10 /// <summary> 11 /// 半径(周る円の半径と自身の半径) 12 /// </summary> 13 const float radius = 1.55f + 0.185f; 14 15 /// <summary> 16 /// 一周する速度 17 /// </summary> 18 const float aroundSpeed = 0.5f; 19 20 void InitAngle() 21 { 22 Vector2 relativePos = transform.position - pivot.transform.position; 23 var rad = Mathf.Atan2(relativePos.y, relativePos.x); 24 //アングルに求めた角度を代入する 25 angle = rad; 26 27 relativePos.x = Mathf.Sin(2 * Mathf.PI * angle) * radius; 28 relativePos.y = Mathf.Cos(2 * Mathf.PI * angle) * radius; 29 var pivotPos = new Vector2(pivot.transform.position.x, pivot.transform.position.y); 30 transform.position = pivotPos + relativePos; 31 }
恐らく角度から配置位置を決めた後からの計算が違うような気がします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/08 05:44
2021/01/08 06:01 編集
2021/01/08 05:49 編集
2021/01/08 05:48
2021/01/08 05:53
2021/01/08 05:55 編集
2021/01/08 05:56
2021/01/08 05:57
2021/01/08 05:57
2021/01/08 06:02 編集
2021/01/08 06:05 編集