のように、手が奇妙な文字の真ん中に置かれているだけです。右手と左手は、手を置くべき位置のgameobjectsです。Unity3DでInverse Kinematicsを使って銃を手に入れようとすると、
左のスクリーンショットは再生モードにあり、中間のスクリーンショットはありません。そこでIKはありません。 (ユニティ例から適応)ソースコード:
void OnAnimatorIK(int layerIndex) {
float aim = 1f;
if (layerIndex == 0) {
if (player != null) {
Vector3 target = player.transform.GetChild(0).position + Vector3.up;
animator.SetLookAtPosition(target);
animator.SetLookAtWeight(aim, 0.5f, 0.5f, 0.0f, 0.5f);
}
}
if (layerIndex == 1) {
if (leftHandOnGunPosition != null) {
animator.SetIKPosition(AvatarIKGoal.LeftHand, leftHandOnGunPosition.transform.position);
animator.SetIKRotation(AvatarIKGoal.LeftHand, leftHandOnGunPosition.transform.rotation);
animator.SetIKPositionWeight(AvatarIKGoal.LeftHand, aim);
animator.SetIKRotationWeight(AvatarIKGoal.LeftHand, aim);
}
if (rightHandOnGunPosition != null) {
animator.SetIKPosition(AvatarIKGoal.RightHand, rightHandOnGunPosition.transform.position);
animator.SetIKRotation(AvatarIKGoal.RightHand, rightHandOnGunPosition.transform.rotation);
animator.SetIKPositionWeight(AvatarIKGoal.RightHand, aim);
animator.SetIKRotationWeight(AvatarIKGoal.RightHand, aim);
}
}
}
誰も私が間違ってやっているものを私に伝えることができますか?
更新: 私はちょうど右手が左手より先にあることに気づいた。ちょうど銃の位置のように。テストのために、私は手の目標位置を入れ替え、次に左手は右手の前にありました。だから間違いなく正しい位置に手を動かそうとしています...ただそこに着いているだけではありません。
update2: また、lookatもの(if(layerIndex == 0)のすべて)をオフにしてみましたが、何も止めていないことを確認しました。それ以上の違いはありませんでしたが、もうプレーヤーを見ていませんでした。