【发布时间】:2019-08-11 22:24:33
【问题描述】:
我用鼠标在屏幕上移动图像并将其放置在我想要的位置。我在屏幕底部有一个面板,我想检测图像何时在内部触摸OnEndDrag
我知道我可以使用
void OnCollisionEnter2D(Collision2D collision) {
if (collision.gameObject.tag == "Panel") {
Destroy(gameObject);
}
}
不过我想进去看看:
public void OnEndDrag(PointerEventData eventData)
{
if (this.gameObject.tag != "Clone")
{
transform.gameObject.SetActive(false);
}
}
*** 更新
我已经按照建议更新了我的代码。但是,当我将图像放在面板上时,我无法获得Debug.Log("Image is over panel");。我将脚本附加到图像上,并且面板上有一个 Box Collider 2D。
public void OnEndDrag(PointerEventData eventData)
{
//Getting corners of Image
Vector3[] corners = new Vector3[4];
GetComponent<RectTransform>().GetWorldCorners(corners);
Debug.Log("World Corners");
for (var i = 0; i < 4; i++)
{
Debug.Log("World Corner " + i + " : " + corners[i]);
}
var bottomLeft = corners[0];
var topRight = corners[2];
var panelCollider = Physics2D.OverlapArea(bottomLeft, topRight);
if (panelCollider && panelCollider.gameObject.tag == "Panel")
{
Debug.Log("Image is over panel");
}
}
【问题讨论】:
-
Physics(或Physics2D)类应该会有所帮助。