Я пытаюсь выровнять своего персонажа с землей, стреляя raycast вниз и выравнивая вращение моих персонажей с нормальным основанием.
Вот фрагмент:
RaycastHit hit;
Vector3 ray = transform.TransformDirection(Vector3.down);
if(Physics.Raycast(transform.position, ray, out hit)) {
transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal) * transform.rotation;
}
Когда яя пытаюсь сгладить это вращение, хотя, похоже, оно вообще не происходит.
Вот как я пытаюсь отменить эти значения.
RaycastHit hit;
Vector3 ray = transform.TransformDirection(Vector3.down);
if(Physics.Raycast(transform.position, ray, out hit)) {
quatTargetRotation = Quaternion.FromToRotation(Vector3.up, hit.normal) * transform.rotation;
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.FromToRotation(Vector3.up, hit.normal), 0.5f * Time.deltaTime);
}
quatTargetRotation являетсяпеременная класса класса Quaternion.