【问题标题】:Unity detect image collision only OnEndDragUnity 仅检测图像碰撞 OnEndDrag
【发布时间】: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)类应该会有所帮助。

标签: c# unity3d


【解决方案1】:

你可以使用例如Physics2D.OverlapArea 并用于积分,例如RectTransform.GetWorldCorners 很大程度上取决于您的设置。大概是这样的

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);
    }
}  

注意:在智能手机上打字,所以没有保修,但我希望这个想法能清楚

【讨论】:

  • 我以您的回答为指导,并阅读了 Unity 参考文档。但是我很困惑,我正在检查图像和面板中的正确值。我已经用我正在运行的当前代码更新了我的问题。如果您能检查一下,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-12
相关资源
最近更新 更多