1) Если upbodyConnecter.rotation.x за пределами значений - начинаем вращать в обратную сторону. Результат - дёргается сильно.
2) Если upbodyConnecter.rotation.x за пределами значений - возвращаем в ближайшее доступное значение. Результат - опять дёргается.
Какие есть возможные решения такой проблемы(чтобы не дергалось и не залипало в одной позиции(тоже было))? Код прикладываю.
Синтаксис:
Используется csharp
public float horizontalSpeed = 7.0f; //Скорость вращения камеры по X
public float verticalSpeed = 7.0f; //Скорость вращения камеры по Y
public Transform upbody; //Префаб башни
public Transform upbodyConnecter; //Префаб соединения башни с ногами
void Update () {
float h = horizontalSpeed * Input.GetAxis ("Mouse X");
float v = verticalSpeed * Input.GetAxis ("Mouse Y");
if (upbodyConnecter.rotation.x<=0.0&upbodyConnecter.rotation.x>=-0.10)
{
upbodyConnecter.Rotate(-v, 0, 0);
}
else
{
if (upbodyConnecter.rotation.x>=0.0) upbodyConnecter.rotation = new Quaternion(0.0f,upbodyConnecter.rotation.y,upbodyConnecter.rotation.z,upbodyConnecter.rotation.w);
if (upbodyConnecter.rotation.x<=-0.1) upbodyConnecter.rotation = new Quaternion(-0.1f,upbodyConnecter.rotation.y,upbodyConnecter.rotation.z,upbodyConnecter.rotation.w);
}
Debug.Log(upbodyConnecter.rotation.x);
upbody.Rotate(0, h, 0);
...
}
public float verticalSpeed = 7.0f; //Скорость вращения камеры по Y
public Transform upbody; //Префаб башни
public Transform upbodyConnecter; //Префаб соединения башни с ногами
void Update () {
float h = horizontalSpeed * Input.GetAxis ("Mouse X");
float v = verticalSpeed * Input.GetAxis ("Mouse Y");
if (upbodyConnecter.rotation.x<=0.0&upbodyConnecter.rotation.x>=-0.10)
{
upbodyConnecter.Rotate(-v, 0, 0);
}
else
{
if (upbodyConnecter.rotation.x>=0.0) upbodyConnecter.rotation = new Quaternion(0.0f,upbodyConnecter.rotation.y,upbodyConnecter.rotation.z,upbodyConnecter.rotation.w);
if (upbodyConnecter.rotation.x<=-0.1) upbodyConnecter.rotation = new Quaternion(-0.1f,upbodyConnecter.rotation.y,upbodyConnecter.rotation.z,upbodyConnecter.rotation.w);
}
Debug.Log(upbodyConnecter.rotation.x);
upbody.Rotate(0, h, 0);
...
}