Ray из 2D коллайдера

352
20 марта 2017, 06:52

Когда нечего было делать, нашел функцию 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"

Answer 1

Вот этот код покажет вам первые три встреченных коллайдера

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 массив из трех элементов, получаем первые три попадания в данном направлении.

READ ALSO
Синтаксис языка C#

Синтаксис языка C#

Как в программе на языке C# распознать ссылочную переменную без ключевого слова ref?

317
Помогите разобраться в синтаксисе

Помогите разобраться в синтаксисе

Правильно ли я понимаю, что в методе Print "p" - это локальная ссылочная переменная, которая ссылается на главный элемент списка? (именно в первой...

256
Отправка Ajax формы в ASP.NET

Отправка Ajax формы в ASP.NET

Отправляю Ajax формуВ которой указан элемент для отображения во время отправки

256