Событие NonCollider Click

У меня такой вопрос. У меня есть некоторые объекты на экране. Эти объекты содержат бокс-коллайдер. Когда я нажимаю на них, что-то происходит, это не имеет значения. Теперь не знаю, как сделать, чтобы при клике где-нибудь на экране, но не на одном из объектов, мне выдавало Debug.Log("Bad Click, здесь нет объекта"); Я думал взять положение курсора и определить, находится ли он над объектом, а если нет, но я не понимаю.

public GameObject[] objects;

public void Start()
{
    foreach (GameObject ob in objects)
    {
        ob.GetOrAddComponent<ColliderEventSystem>().ColliderEntered += Click;
    }
}

private void Update()
{
    //Do something when I click wrong
}

person Anghelina Guznac    schedule 24.01.2018    source источник


Ответы (1)


Одним из подходов было бы использование raycast. Если приведение не возвращает коллайдер по клику, вы можете распечатать свой оператор/запустить свой код.

Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        RaycastHit hit;

        if (Physics.Raycast(Camera.main.ScreentoWorldPoint(Input.mousePosition), Vector3.forward, out hit))
            Debug.Log("object clicked: " + hit.collider.name));
        else
            Debug.Log("Bad Click, here is no object")
    }
}
person ryeMoss    schedule 24.01.2018