C# Unity仅在DDRAG上检测图像冲突

C# Unity仅在DDRAG上检测图像冲突,c#,unity3d,C#,Unity3d,我用鼠标在屏幕上移动一个图像,然后把它放在我想放的地方。我在屏幕底部有一个面板,我想检测图像何时触到内部onendrag 我知道我可以用 void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.tag == "Panel") { Destroy(gameObject); } } 不过,我想检查一下内部: public void OnEndDrag(PointerE

我用鼠标在屏幕上移动一个图像,然后把它放在我想放的地方。我在屏幕底部有一个面板,我想检测图像何时触到内部
onendrag

我知道我可以用

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(“图像在面板上方”)当我将图像放置在面板上时。我将脚本附加到图像,面板上有一个框碰撞器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");
    }
}
public void onendrag(PointerEventData eventData)
{
//获取图像的角点
Vector3[]角点=新Vector3[4];
GetComponent().GetWorldCorners(角点);
Debug.Log(“世界角落”);
对于(变量i=0;i<4;i++)
{
Log(“世界角落”+i+:“+corners[i]);
}
var bottomLeft=角点[0];
var topRight=拐角[2];
var panelCollider=physic2d.overlapparea(左下、右上);
if(panelCollider&&panelCollider.gameObject.tag==“Panel”)
{
Log(“图像位于面板上方”);
}
}
您可以使用,例如,对于积分,可以使用,例如,这在很大程度上取决于您的课程设置。大概是

public void OnEndDrag(PointerEventData eventData)
{
    if (gameObject.tag == "Clone") return;

    var corners = GetComponent<RectTransform>().GetWorldCorners();

    var bottomLeft = corners[0];
    var topRight = corners[2];

    var collider = Physics2D.OverlapArea(bottomLeft, topRight);

    if(collider && collider.gameObject.tag == "Panel")
    {
        Destroy(gameObject);
    }    
    else
    {
        gameObject.SetActive(false);
    }
}  
public void onendrag(PointerEventData eventData)
{
如果(gameObject.tag==“克隆”)返回;
var corners=GetComponent().GetWorldCorners();
var bottomLeft=角点[0];
var topRight=拐角[2];
var collider=Physics2D.Overlapparea(左下、右上);
if(collider&&collider.gameObject.tag==“面板”)
{
摧毁(游戏对象);
}    
其他的
{
gameObject.SetActive(false);
}
}  


注意:在智能手机上输入,因此没有保修,但我希望想法变得清晰

物理
(或
Physics2D
)类应该会有所帮助。我已将您的答案作为指南,并阅读了Unity参考文档。然而,我感到困惑的是,我正在检查图像和面板中的正确值。我已经用当前运行的代码更新了我的问题。如果您能查一下,我将不胜感激,谢谢