перебор колайдеров
напоминаю, что только осваиваю Unity и шарп
точка=колайдер
Какая точка определяется, используя
Physics2D.OverlapCircle(Hero.transform.position, 5);
?

Чем принципиально отличается
Physics2D.OverlapCircle(Hero.transform.position, 5); 
и
Physics2D.OverlapCircleAll(Hero.transform.position, 5); 
?
понятно, что приставка All намекает на все точки вокруг, но опять таки: как это использовать?


Лучший ответ:
Diabfall, да, переделай я на часть думаю отвечу)
Хоят
Hero.transform.position
Возвращает вектор же, берешь и используешь 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 координате



Просмотров: 575

» Лучшие комментарии


alexprey #1 - 1 год назад 0
Кто-то правила нарушает =_=
Diabfall #2 - 1 год назад (отредактировано ) 0
Кто-то правила нарушает =_=
1 вопрос - 1 тема? D:
alexprey #3 - 1 год назад 4

Diabfall, да, переделай я на часть думаю отвечу)
Хоят
Hero.transform.position
Возвращает вектор же, берешь и используешь 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 координате
Diabfall #4 - 1 год назад 0
alexprey, сяп
а так нельзя?
float x1 = .0;
x1 = Hero.transform.position.x;

OverlapCircleAll - вернет все коллайдеры
ааа, это массив?
Collider2D[] hitbox = Physics2D.OverlapCircleAll(Hero.transform.position, 5);

и очевидный вопрос от дауна
float - аналог real в jass?
Devion #5 - 1 год назад (отредактировано ) 2
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
Diabfall #6 - 1 год назад 0
Devion, спс!