首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一: collider2D.bounds.Contains不能正常工作

统一: collider2D.bounds.Contains不能正常工作
EN

Stack Overflow用户
提问于 2015-03-22 21:23:51
回答 1查看 2.3K关注 0票数 1

我有一个GameController对象,它有一个方形的2D对撞机,覆盖整个屏幕。在这个GameController中有7个对象(区域),每个对象都有自己的多边形对撞机。下面是设置:

视图

层次结构

我要做的是,当我点击大方格对撞机时,检查点击的位置是否在这些区域的对撞机内。

这是GameController脚本的OnMouseDown()代码:

代码语言:javascript
复制
void OnMouseDown ()
{
    Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

    if(this.collider2D.bounds.Contains(mousePos)) Debug.Log ("1st Check");

    //'Zones' is a list with all the Zones GameObjects
    foreach (GameObject zone in Zones)
    {
        if(zone.collider2D.bounds.Contains(mousePos))
        {
            Debug.Log ("2nd Check");
        }
    }
}

难道我不应该一直拿到“第一张支票”吗?因为这是多余的:如果因为我在对撞机内单击而触发了OnMouseDown(),那么鼠标的位置必须在对撞机内。但是我从来没有这样做过,所以我想我遗漏了一些关于Input.mousePosition或ScreenToWorldPoint()的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-27 04:00:35

问题是.collider2D.bounds.Contains(mousePos)得到了一个Vector3,但是应该得到一个Vector2。把它改成了.collider2D.bounds.Contains(Vector2(mousePos)),工作起来很有魅力。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29200031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档