RayCast по Sprites

182
12 ноября 2018, 20:50

В проекте есть некий код для определения слоев

List<RaycastResult> results = EventSystem.current.Raycast (pointMouseBegin, LayerMask.NameToLayer ("SwipeActive"));
if (results.Count > 0) {
    Debug.Log ("Swipe count 1");    
    isClick = true;
}

скрипт:

public static List<RaycastResult> Raycast(this EventSystem system, Vector2 mousePosition, LayerMask layer)
{
    List<RaycastResult> raycast = new List<RaycastResult>();
    PointerEventData eventDataCurrentPosition = new PointerEventData(system);
    eventDataCurrentPosition.position = new Vector2(mousePosition.x, mousePosition.y);
    List<RaycastResult> results = new List<RaycastResult>();
    system.RaycastAll(eventDataCurrentPosition, results);
    foreach (RaycastResult result in results)
    {
        if (result.gameObject.layer == layer)
        {
            raycast.Add(result);
        }
    }
    return raycast;
}

он работает только на UI в канвасе, на простом объекте с Sprite нет, что не так ?

Answer 1

Посмотрите статью с хабра, чтобы понять как и с чем работает EventSystem. Если кратко, то с объектами Unity UI ( с помощью Graphics Raycaster), а так же с 2d и 3d физикой (Physics 2D Raycaster и Physics Raycaster), таким образом, EventSystem не должен работать с простыми Sprite, только если вы не добавите к ним BoxCollider, либо BoxCollider2d.

READ ALSO
Имитация ручного ввода текста selenium webdriver

Имитация ручного ввода текста selenium webdriver

Собственно как сделать имитацию ручного ввода текста в selenium webdriver, по сколько метод SendKeys не подходит, он вводит строку одним разом, а нужно...

306
Потеря знаков при конвертации строки в double

Потеря знаков при конвертации строки в double

Есть возможно сделать как-то чтобы не терялись знаки при конвертации строки в double при следующих ситуациях?

167
Как исправить прыжок?

Как исправить прыжок?

Реализацию прыжка в 2D платформере сделал через "rigidbodyAddForce", при получении урона, происходит тоже самое (то есть отталкивание)

209