Общем всё просто, есть столбик 3 по Y и соответственно по X и Z - 1 и 1 надо сделать чтобы при наклоне больше критического угла он возвращался к до критическому.
Вот что я смог придумать но работает не правильно.
Код
Rigidbody rb;
public Transform _sample; // Образец для подражания
public Transform _baseOfColumn; // Пустышка в основании столбика с риджит бади
public float _angle; // Угол между образцом и столбиком
// Use this for initialization
void Start()
{
rb = _baseOfColumn.GetComponent<Rigidbody> ( );
}
// Update is called once per frame
void FixedUpdate()
{
Quaternion _base = _baseOfColumn.rotation;
Quaternion _smpl = _sample.rotation;
_angle = Quaternion.Angle(_base, _smpl);
if (_angle > 40)
{
// Этот вариант ведёт себя очень странно
transform.rotation = Quaternion.Slerp(_base, _smpl, 0.5f);
// В этом прыгает всё время хотя и не падает
_baseOfColumn.rotation = Quaternion.Slerp(_base, _smpl, 0.5f);
// И в этом тоже прыгает всё время и тоже не падает
rb.rotation = Quaternion.LerpUnclamped(_base, _smpl, 1f);
// И в этом тоже прыгает всё время и тоже не падает
rb.MoveRotation(Quaternion.LerpUnclamped(_base, _smpl, 1f));
//
}
}
И как бы избавится от объекта образца?
Помогите пожалуйста сделать чтобы столбик не мог упасть и реалистично возвращался в угол указанный мной, ибо он может оказаться на наклонной поверхности поэтому он должен вернутся не строго вертикально а в исходное положение.