Skip to content

Commit 286600f

Browse files
committed
左腕が逆回転していた問題を修正
1 parent ac32e77 commit 286600f

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

Assets/Scripts/Avatar/WristRotationFix.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,13 @@ private float CalculateHandTwistAngle(ArmFixItem item, Quaternion forearmRotatio
238238

239239
// Swing-Twist分解でTwist成分のみを抽出
240240
Vector3 twistAxis = Vector3.right; // ForearmのローカルX軸(Twist軸)
241+
242+
// 左腕の場合はTwist軸を反転
243+
if (item.IsLeftArm)
244+
{
245+
twistAxis = -twistAxis; // Vector3.leftと同等
246+
}
247+
241248
Quaternion swing, twist;
242249
SwingTwistDecomposition(deltaRotation, twistAxis, out swing, out twist);
243250

@@ -290,6 +297,9 @@ public class ArmFixItem
290297
public Transform Forearm;
291298
public Transform Hand;
292299

300+
// 左腕かどうかの判定(初期化時に決定)
301+
public bool IsLeftArm;
302+
293303
// Twist軸(ローカル空間)
294304
public Vector3 UpperArmTwistAxis;
295305
public Vector3 ForearmTwistAxis;
@@ -314,6 +324,10 @@ public ArmFixItem(Transform shoulder, Transform upperArm, Transform forearm, Tra
314324
Forearm = forearm;
315325
Hand = hand;
316326

327+
// 初期化時に肩から手への方向で左右を判定
328+
Vector3 shoulderToHand = hand.position - shoulder.position;
329+
IsLeftArm = shoulderToHand.x < 0;
330+
317331
// UpperArmのTwist軸(Forearm→UpperArm方向をUpperArmローカル空間で)
318332
UpperArmTwistAxis = upperArm.InverseTransformDirection(forearm.position - upperArm.position).normalized;
319333
// ForearmのTwist軸(Hand→Forearm方向をForearmローカル空間で)

0 commit comments

Comments
 (0)