Есть тележка. Можно даже представить её в виде примитива - брусок с коллайдером. Таскаем его волоком за риджит бади. Задача в том чтобы запретить ему наклоняться по горизонтали более определённого угла, в моём случае пока 25 градусов, в любом направлении. Так чтобы даже спрыгивая с высоты он падал колёсами вниз и не кувыркался, и вааще не переворачивался. Я в кодировании на шарпе новичок единственно до чего смог до думаться такой код но это лажа. Помогите пожалуйста.
Синтаксис:
Используется csharp
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));
//
}
}
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));
//
}
}