Size: a a a

2020 June 12

ИХ

Игорь Хуснадинов... in unity3d.ru
Andrey Faraponov
а скрин как они друг от друга остают можешь скинуть?
сверху когда выделен предок
внизу выделен чайлд
источник

ИХ

Игорь Хуснадинов... in unity3d.ru
когда открываю префаб, внутри всё ок, бросаю в канвас на сцену - вот такой бред
источник

AF

Andrey Faraponov in unity3d.ru
нажми T и сделай еще такие же скрины
на родительском элементе только ректтрансформ?
источник

S

Spirit💎 in unity3d.ru
Господа, добрый вечер!

Не могу понять в чем проблема. Есть гейм обжект, в нем есть дети, 27 штук. У каждого ребенка задана ротация по Z в кратных 90 значениях.

Моя задача проверить, чтобы каждый из детей был в нормальной позиции, то есть Z==0. Но, как я понял, из-за флоата, значения получаются не совсем корректные. Я суммирую z-значения каждого детей и хочу получить 0. Получаю какие-то дробные числа, типа 8.421313, когда все дети в z-позиции на 0. Как адекватно тогда проверять поворот?
источник

ИХ

Игорь Хуснадинов... in unity3d.ru
Andrey Faraponov
нажми T и сделай еще такие же скрины
на родительском элементе только ректтрансформ?
там ещё MonoBehaviour, но он только в плеймоде активен
скрины сейчас сделаю
источник

AF

Andrey Faraponov in unity3d.ru
Spirit💎
Господа, добрый вечер!

Не могу понять в чем проблема. Есть гейм обжект, в нем есть дети, 27 штук. У каждого ребенка задана ротация по Z в кратных 90 значениях.

Моя задача проверить, чтобы каждый из детей был в нормальной позиции, то есть Z==0. Но, как я понял, из-за флоата, значения получаются не совсем корректные. Я суммирую z-значения каждого детей и хочу получить 0. Получаю какие-то дробные числа, типа 8.421313, когда все дети в z-позиции на 0. Как адекватно тогда проверять поворот?
если достаешь position из кода то ты получаешь глобальную позицию, чтоб получить локальную (ту что видишь в инспекторе) то нужно обращаться к transform.localPosition
источник

ИХ

Игорь Хуснадинов... in unity3d.ru
Andrey Faraponov
нажми T и сделай еще такие же скрины
на родительском элементе только ректтрансформ?
там всё выглядит уже нормально, странно. проблема в канвасе?
источник

S

Spirit💎 in unity3d.ru
Andrey Faraponov
если достаешь position из кода то ты получаешь глобальную позицию, чтоб получить локальную (ту что видишь в инспекторе) то нужно обращаться к transform.localPosition
спасибо! сейчас попробую
источник

AF

Andrey Faraponov in unity3d.ru
Игорь Хуснадинов
там всё выглядит уже нормально, странно. проблема в канвасе?
хз, но сейчас вроде все ок, но и в прошлом скрине я не понимаю что тебя смущало. Посмотри настройку слева вверху в Unity Pivot/Center
источник

ИХ

Игорь Хуснадинов... in unity3d.ru
Andrey Faraponov
хз, но сейчас вроде все ок, но и в прошлом скрине я не понимаю что тебя смущало. Посмотри настройку слева вверху в Unity Pivot/Center
...ять... вот это я тупанул) спасибо за помощь!
источник

S

Spirit💎 in unity3d.ru
Andrey Faraponov
если достаешь position из кода то ты получаешь глобальную позицию, чтоб получить локальную (ту что видишь в инспекторе) то нужно обращаться к transform.localPosition
все равно, при получении localEulerAngles вот такая сумма выходит
источник

AF

Andrey Faraponov in unity3d.ru
Spirit💎
все равно, при получении localEulerAngles вот такая сумма выходит
Так ты позицию или ротейшн достаешь?
источник

S

Spirit💎 in unity3d.ru
Andrey Faraponov
Так ты позицию или ротейшн достаешь?
ротейшен
transform.GetChild(i).localEulerAngles.z
источник

DV

Danila Vanilla in unity3d.ru
Spirit💎
все равно, при получении localEulerAngles вот такая сумма выходит
Это очень маленькое число 0.000038.
Я бы сделал что-то типа такого:
if(Math.Abs(transform.localEulerAngles.z)  <  tolerance){
angles += 0;
}
источник

S

Spirit💎 in unity3d.ru
Danila Vanilla
Это очень маленькое число 0.000038.
Я бы сделал что-то типа такого:
if(Math.Abs(transform.localEulerAngles.z)  <  tolerance){
angles += 0;
}
Спасибо, попробую
источник

DV

Danila Vanilla in unity3d.ru
Danila Vanilla
Это очень маленькое число 0.000038.
Я бы сделал что-то типа такого:
if(Math.Abs(transform.localEulerAngles.z)  <  tolerance){
angles += 0;
}
А лучше один раз сравнить в конце сумму углов, чтобы каждый раз не проверять условие.
источник

GV

Gleb Vorontcov in unity3d.ru
Danila Vanilla
Это очень маленькое число 0.000038.
Я бы сделал что-то типа такого:
if(Math.Abs(transform.localEulerAngles.z)  <  tolerance){
angles += 0;
}
лучше взять float.Epsilon
источник

DV

Danila Vanilla in unity3d.ru
Gleb Vorontcov
лучше взять float.Epsilon
Mathf.Epsilon или это идентичные?
источник

GV

Gleb Vorontcov in unity3d.ru
Danila Vanilla
Mathf.Epsilon или это идентичные?
идентичные
источник

DV

Danila Vanilla in unity3d.ru
Gleb Vorontcov
идентичные
Буду знать, что идентичные, спасибо. Как по-мне Mathf.Epsilon более читабельнее, но это наверное дело вкуса.
источник