Unity的射线判定问题 - chunlieater/chunlifeet GitHub Wiki

  1. 让UI遮挡摄像机的射线:如果射线可能经过UI,那么UI就应该遮挡射线,所以要先判断当前点击的位置上是否有UI判定,如果有,那么就不进行场景的射线投射,判定方式是利用EventData来获取当前Raycast对象的数组,根据数组是否为空,判断当前的点击坐标是否在UI界面上,如果是,则返回本次点击。具体方法如下:
  • pairvate bool CheckGuiRaycastObject(){
  • PointerEventData pEventData = new pointerEventData(_eventSystem);
  • pEventData.pressPosition = Input.mousePosition;
  • pEventData.position = Input.mousePosition;
  • List list = new List();
  • grahicRaycaster.Raycast(eventData,list);
  • return list.Count > 0;
  • }