Какая точка определяется, используя
Physics2D.OverlapCircle(Hero.transform.position, 5);
?
Чем принципиально отличается
Physics2D.OverlapCircle(Hero.transform.position, 5);
и
Physics2D.OverlapCircleAll(Hero.transform.position, 5);
?
понятно, что приставка All намекает на все точки вокруг, но опять таки: как это использовать?
Ответ
Возвращает вектор же, берешь и используешь X и Z. Если тебя интересует горизонтальная плоскость. Если ты говоришь про координаты ячейки. то тут просто округляешь.
var position = ... const float cellSize = 20.0f; var cellX = Mathf.Round(position.x / cellSize); var cellY = Mathf.Round(position.y / cellSize);
По поводу оверлапов. Смотрим доку и видим:
If more than one collider falls within the circle then the one returned will be the one with the lowest Z coordinate value.
По русски: возвращается первый попавшийся с наименьшей z координатой
OverlapCircleAll - вернет все коллайдеры
Причем они будут уже отсортированы по z координате
Смотрите также:
Комментарии
Возвращает вектор же, берешь и используешь X и Z. Если тебя интересует горизонтальная плоскость. Если ты говоришь про координаты ячейки. то тут просто округляешь.
var position = ... const float cellSize = 20.0f; var cellX = Mathf.Round(position.x / cellSize); var cellY = Mathf.Round(position.y / cellSize);
По поводу оверлапов. Смотрим доку и видим:
If more than one collider falls within the circle then the one returned will be the one with the lowest Z coordinate value.
По русски: возвращается первый попавшийся с наименьшей z координатой
OverlapCircleAll - вернет все коллайдеры
Причем они будут уже отсортированы по z координате
float - аналог real в jass?
да.
в C# есть два типа для значений с плавающей точкой. double и float. double более точный, то есть может сохранить больше знаков. float менее точный, хранит около 7 знаков. Это типы с погрешностью. Они могут хранить очень маленькие и очень большие значения, содержащие не более 32 нулей (или около того) подряд.
То есть через тип float можно выразить числа
12345670000000000000000 1234567 123.4567 0.000000000000001234567
Причем любые числа будут округлены до 6-7 знаков в случае float, то есть число
123.456789 будет округлено до 123.4568
Эти погрешности возникают часто непредсказуемо в зависимости от способа подсчета (быстрый/медленный). Потому строгое сравнение чисел в этом формате недопустимо.
Например сравнение типа x == 0.0f может не произойти, даже если ты вычитаешь из числа само себя. Потому при проверке равенства используют определенные формулы, например
Mathf.Abs(x) < 0.000001f
То есть проверяют число на принадлежность диапозону от -.000001f до +.000001f в данном случае. (Mathf.Abs - это операция модуля)
В зависимости от способа написания числа ты получаешь разный тип.
например в твоем случае
var x1 = .0f; //x1 - переменная типа float var x1 = .0; //x1 - переменная типа double var x1 = .0d; //x1 - переменная типа double
Возможность добавлять комментарии была ограничена
CollectableItemData.cs
[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]