2020-04-23 03:31:17 +01:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections;
|
2020-03-29 04:19:24 +01:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using UnityEngine;
|
2020-05-26 01:12:06 +01:00
|
|
|
|
using UnityEngine.EventSystems;
|
2020-03-29 04:19:24 +01:00
|
|
|
|
|
|
|
|
|
|
public class ClickRaycaster : MonoBehaviour
|
|
|
|
|
|
{
|
2020-05-26 01:12:06 +01:00
|
|
|
|
public event Action<PointerEventData> OnClickMiss;
|
2020-03-29 04:19:24 +01:00
|
|
|
|
public Camera RayCamera;
|
|
|
|
|
|
private ClickCatcher _clickCatcher;
|
|
|
|
|
|
|
|
|
|
|
|
void Start()
|
|
|
|
|
|
{
|
|
|
|
|
|
_clickCatcher = GetComponent<ClickCatcher>();
|
|
|
|
|
|
_clickCatcher.OnClick += pointer =>
|
|
|
|
|
|
{
|
|
|
|
|
|
RaycastHit hit;
|
|
|
|
|
|
Physics.Raycast(RayCamera.ScreenPointToRay(pointer.position), out hit);
|
|
|
|
|
|
if (hit.collider != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
var clickable = hit.collider.GetComponent<ClickableCollider>();
|
|
|
|
|
|
if (clickable != null)
|
|
|
|
|
|
clickable.Click(pointer);
|
|
|
|
|
|
}
|
2020-05-26 01:12:06 +01:00
|
|
|
|
else OnClickMiss?.Invoke(pointer);
|
2020-03-29 04:19:24 +01:00
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|