0
我想使用Unity UI對象創建一個簡單的拖放遊戲。在UI上拖放
我的對象現在是帶有腳本的圖像。我的腳本使用OnBeginDrag
,OnDrag
和OnEndDrag
事件,當我想要移動圖像對象時它可以正常工作。
但是圖像對象總是正方形的,我只想在鼠標位於特定區域時才檢測拖動。所以我在我的圖像上創建了一個Polygon Collider 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++;
}
}
http://answers.unity3d.com/questions/423378/how-do-you-create-complex-collision-geometry-to-ma.html - 這可能有助於 – Clint
@Clint謝謝回答,但它不是我所需要的。我知道如何創建複雜的對撞機,因爲我使用了Polygon Collider 2D來創建我想要的形狀。我不知道的是如何應用我的拖放腳本,以便它使用那些碰撞器而不是精靈。當我嘗試將我的腳本應用到沒有圖像的對象時,它根本不起作用。它不檢測任何拖動事件。 –