Когда нечего было делать, нашел функцию Raycast
у класса Collider2D
в unity
. Мне стало интересно, откуда будет пускаться луч (я подумал, что из всех точек коллайдера). Решил протестировать, написал код и в результате столкновение ничего не выводит. Почему так? И откуда пускаются лучи?
Вот код скрипта теста:
private Collider2D collider2d;
private void Start() {
collider2d = GetComponent<Collider2D>();
}
private void Update() {
RaycastHit2D[] hits = null;
collider2d.Raycast(Vector2.left, hits);
Debug.Log(hits == null ? "No collusion" : hits.ToString());
}
А вот сам скрин теста:
Пробовал так же вывод сделать так:
RaycastHit2D[] hits = null;
Debug.Log(collider2d.Raycast(Vector2.left, hits));
В результате тож самое, только выводит "0"
Вот этот код покажет вам первые три встреченных коллайдера
private void Update()
{
// массив под три попадания
RaycastHit2D[] hits = new RaycastHit2D[3];
collider2d.Raycast(Vector2.left, hits);
print("~~~~~~ начало попаданий ~~~~~~~~");
foreach (RaycastHit2D hit in hits)
{
print(hit.collider);
}
print("~~~~~~ конец попаданий ~~~~~~~~");
}
Дело в том, что в отличии от 3д версии, у которой параметр RaycastHit идет с ключевым словом out, у 2д версии хиты - это массив, плюс без out массив уже должен быть инициирован. Задав вместо null массив из трех элементов, получаем первые три попадания в данном направлении.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как в программе на языке C# распознать ссылочную переменную без ключевого слова ref?
Правильно ли я понимаю, что в методе Print "p" - это локальная ссылочная переменная, которая ссылается на главный элемент списка? (именно в первой...
Отправляю Ajax формуВ которой указан элемент для отображения во время отправки