Почему переменная float z=0 меняет значение на -2,384186E-07?
Имеются переменные типа float X=0 и Z=0. Но при выводе данных Z начала (именно начал, сперва этого не было) принимать значение -2,384186E-07. В итоге получается x=:0 z=:-2,384186E-07. Изменений в коде не производилось, язык C#
2CHEVSKII, остальной код никак не затрагивает эти две переменные
if (add_unit == true)
{
float x = Hex_Plane_Rock1.GetComponent().bounds.center.x;
float z = Hex_Plane_Rock1.GetComponent().bounds.center.z;
Debug.Log("x=:" + x + " z=:" + z);
Instantiate(Unit1, new Vector3(x, 2, z),Quaternion.Euler(0, 0, 0));
for (int i = 0; i < 11; i++)
{
for (int j = 0; j < 11; j++)
{
if (x == map_x[i,j] && z == map_z[i,j])
{
map_tf[i, j] = true;
}
}
}
GameObject.Find("Panel_Start_Shop").GetComponent().Return();
}
zipatiki, а как это вообще может работать? Я так понимаю, что Hex_Plane_Rock1 - это MonoBehaviour, но почему в GetComponent() нет аргумента типа? Такой же вопрос и к GameObject.Find("Panel_Start_Shop").GetComponent()...
Проверьте, насколько правильно установлены границы у вашего обьекта, раз уж показывает такое число, значит точка и правда имеет такое значение.
2CHEVSKII, в другом скрипте центр первого объекта имеет значения x=0 и z=0, да и к тому же чуть ранее всё работало коректно. если же вывести массив с расположением объектов, то все стоят на своих местах. сдвиг происходит лишь в момент определения середины колайдера на который был сделан клик, но колайдер привязан к центру данного объекта и посему должен иметь координаты такие же, а именно x=0 и z=0, так же повторюсь что ранее всё определялось верно
zipatiki, а объект один и тот же? В смысле инстанс, а не тип. Просто такого быть не может фактически. Вызовите дебаг в первом скрипте, а потом во втором. Если результаты разные, а, как вы говорите - значения не менялись, значит - это разные объекты.
zipatiki, Через Instantiate? Проверяйте позицию, на которой вы их создаете при клонировании.
И вообще - выведите сразу полный вектор в консоль (сериализуйте), зачем усложнять жизнь себе?
2CHEVSKII, суть в том что я заполняю массив этими объектами
for (int i = 0; i < 11; i++)
{
for (int j = 0; j < 11; j++)
{
if (i == 0 && j == 0) { }
else if (i > 0 && j == 0) { }
else if (j % 2 == 1)
{
x = x - r;
z = z - z2;
}
else
{
x = x + r;
z = z - z2;
}
Map[i, j] = Instantiate(Hex_Plane_Rock1, new Vector3(x, 0, z), Quaternion.Euler(-90, 0, 0));
а после мне требуется по клику на их колайдеры работать с определёнными координамтами