Zefirot
@Zefirot

Как ограничить поворот ступни (IK)?

При постановке ноги согласно нормали нога не всегда выглядит реалистично, иногда очень сильно загибается.
Как установить ограничение поворота чтобы нога не сильно загибалась?
На данный момент поворот у меня осуществляется так
private void SetFootRot(){
      LFRotationIK = animator.GetIKRotation(AvatarIKGoal.LeftFoot);
      LFRotationIKTemp = Quaternion.Lerp(LFRotationIKTemp, GetFootRotate(LFNormal) * LFRotationIK, Time.fixedDeltaTime * 15f);
      LFRotationIK = LFRotationIKTemp;
      animator.SetIKRotation(AvatarIKGoal.LeftFoot, LFRotationIK);
      // также и правая нога
      }
private Quaternion GetFootRotate(Vector3 normal){
      Vector3 rotAxis = Vector3.Cross(Vector3.up, normal);
      float angle = Vector3.Angle(Vector3.up, normal);
      return Quaternion.AngleAxis(angle, rotAxis);
      }
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
gogowq
@gogowq
Ozh domosh acha ozh
private Quaternion GetFootRotate(Vector3 normal)
{
    Vector3 rotAxis = Vector3.Cross(Vector3.up, normal);
    float angle = Vector3.Angle(Vector3.up, normal);
    float maxAngle = 45f; // Максимальный допустимый угол поворота (можете изменить значение по вашему усмотрению)
    angle = Mathf.Clamp(angle, -maxAngle, maxAngle); // Ограничение угла поворота
    return Quaternion.AngleAxis(angle, rotAxis);
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы