Debug.Log(MoveDirection + " >>> " + NewPosition + " != " + OldPosition);
(-1.0, 0.0, -0.9) >>> (-3.1, 0.0, 4.1) != (-3.1, 0.0, 4.1)
И потом, MovePosition двигается к следующему тику физики.
Gizmos.DrawCube(transform.TransformPoint(GroundCheckerPosition), GroundCheckerSize);
Зачем тебе вообще эти 4 рейкаста?
Зачем тебе GroundTouchPoint в виде трансформа, когда там просто вектор должен быть?
Зачем тебе K&R стиль отступов, когда в c# используется Allman?
private Quaternion dirW = new Quaternion(0f, 0f, 0f, 1f);
private Quaternion dirS = new Quaternion(0f, 1f, 0f, 0f);
private Quaternion dirA = new Quaternion(0f, 0.7f, 0f, -0.7f);
private Quaternion dirD = new Quaternion(0f, 0.7f, 0f, 0.7f);
private Quaternion dirWA = new Quaternion(0f, 0.4f, 0f, -0.9f);
private Quaternion dirWD = new Quaternion(0f, 0.4f, 0f, 0.9f);
private Quaternion dirSA = new Quaternion(0f, 0.9f, 0f, -0.4f);
private Quaternion dirSD = new Quaternion(0f, 0.9f, 0f, 0.4f);
......
RotationRequired = CalcRotation(DirMove); // направление относительно нажатых клавиш
.......
private Quaternion CalcRotation(string d){
Quaternion q = RotationCurrent;
switch(d){
case "w": q = dirW; break;
case "s": q = dirS; break;
case "a": q = dirA; break;
case "d": q = dirD; break;
case "wa": q = dirWA; break;
case "wd": q = dirWD; break;
case "sa": q = dirSA; break;
case "sd": q = dirSD; break;
}
return q;
}
Ты пробовал просто позицию полученную по сети подставлять без интерполяции?
без относительно фреймворка, передавай не позицию объекта, а его управление (команды на изменение поведения, повтороты, изменения скорости и т.п.,
Ты используешь Vector3.Lerp который считает расположение точки между двумя указанными позициями
я вот пока что не пойму что является точкой опоры и как тянуть правильно конечности, я вот определяю где пятка а где поверхность и тяну её вниз, то есть координаты её задаю пола, а нога растягивается на сколько можно и всё, дальше нужно сам корпус опускать чтобы нога опустилась ниже, непонятно...