См. эту ссылку
Обнаружение многоугольника Touch Map API V2
Его алгоритм RayCasting может помочь вам:)
Краткое описание алгоритма:
Горизонтальная линия выводится из вашей точки вправо, если она пересекает стороны многоугольника нечетным числом раз, тогда точка находится внутри другого многоугольника :)
Эти ссылки wiki дадут вам полную идею:
Реализуйте то, что вам нужно, но это основа.
using UnityEngine;
public class Test : MonoBehaviour
{
private float distance = 10;
private float offset = -4;
void Update()
{
if (Input.GetKeyDown(KeyCode.Mouse1))
{
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
go.transform.position = new Vector3
{
x = offset += 1.5f,
y = 0,
z = 0
};
}
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Input.GetKeyDown(KeyCode.Mouse0))
{
if(Physics.Raycast(ray, out RaycastHit hit, distance))
{
Destroy(hit.transform.gameObject);
}
}
}
}
Вы должны взглянуть на IPointerClickHandler . Прикрепите этот скрипт к объектам, которые вы хотите щелкнуть по
using UnityEngine;
using UnityEngine.EventSystems;
public class DestroyOnRightClick : MonoBehaviour, IPointerClickHandler
{
public void OnPointerClick (PointerEventData eventData)
{
if (eventData.button == PointerEventData.InputButton.Right)
{
Debug.Log ("Right Mouse Button Clicked on: " + name);
Destroy(gameObject);
}
}
}
Примечание
Убедитесь, что в сцене существует
BLOCKQUOTE>EventSystem
, чтобы разрешить обнаружение щелчков. Для обнаружения щелчков на не-UI GameObjects, убедитесь, что PhysicsRaycaster подключен кCamera
.