Unity3D Physics.Raycast()永远不会是真的

时间:2015-07-17 20:05:07

标签: c# unity3d raycasting

我有一个场景,我有一个带有精灵渲染器和图像的游戏对象。游戏对象有一个2D对撞机。当我点击图片时,我试图获得真正的阅读,但它总是错误的,我不知道我做错了什么。

 TapPos = GetComponent<Camera> ().ScreenToWorldPoint (new Vector3 (Input.mousePosition.x, Input.mousePosition.y, 0));   

 bool SomethingTapped(){

    Vector3 CanvasTapPoint = new Vector3 (TapPos.x, TapPos.y, 10);
    Debug.DrawLine (TapPos, CanvasTapPoint, Color.green, 10f);

    if (Physics.Raycast (TapPos,CanvasTapPoint, 20f)) {
        return true;
    } else
        return false;
}

PS:

  • Debug.DrawLine直接通过我的精灵。

  • 脚本在相机上,相机Z位置为-10

修改 在Andrew Griffin的回复改变了我的代码之后,如果有人想要做同样的事情:

    public Transform ObjectTapped(){

    RaycastHit2D FoundObj = Physics2D.Raycast(TapPos, new Vector2(TapPos.x, TapPos.y + 1),0f);

    if(FoundObj.collider  != null){
        Transform obj = FoundObj.transform;
        return obj;
    }
    else{
        return null;
    }
}

1 个答案:

答案 0 :(得分:3)

查看Physics2D.Raycast。据我所知,Physics.Raycast不适用于2D对撞机。您必须使用物理 2D .Raycast。