我想使用Unity UI对象创建一个简单的拖放游戏。
我现在的对象是带有脚本的图像。我的脚本使用了OnBeginDrag、OnDrag和OnEndDrag事件,当我想要移动图像对象时,它们工作得很好。
然而,图像对象始终是方形的,我希望仅当鼠标位于指定区域时才检测拖动。因此,我在我的图像上创建了一个多边形对撞机2D,并将其调整为我想要的形状。不幸的是,我根本不能让它工作。
public void OnBeginDrag(PointerEventData eventData)
{
var canvas = FindInParents<Canvas>(gameObject);
itemBeingDragged = gameObject;
m_DraggingPlane = canvas.transform as RectTransform;
}
public void OnDrag(PointerEventData eventData)
{
SetDraggedPosition(eventData);
}
public void OnEndDrag(PointerEventData eventData)
{
itemBeingDragged = null;
int i = 0;
foreach (Vector3 hex in otherHexes)
{
Vector3 rayBeginning = hex + transform.position;
rays = Physics2D.RaycastAll(rayBeginning, Vector2.zero);
if (rays.Length > 1) //if there are other elements in RayCast
{
foreach (RaycastHit2D ray in rays)
{
if (ray.transform.gameObject != gameObject && ray.transform.tag == "Hex") //if element is not self and is a HexGrid
{
SuccessfulDrag(ray, i);
}
else if (ray.transform.gameObject != gameObject && ray.transform.tag == "GetOut") //if element is not self and is another puzzle
{
FailedDrag();
break;
}
}
}
else if (rays.Length == 1 && rays[0].transform.gameObject == gameObject) //if there is only one element and it's self
{
FailedDrag();
break;
}
i++;
}
}https://stackoverflow.com/questions/38303550
复制相似问题