Unity3D Physics.Raycast()从不为真

本文关键字:Physics Raycast Unity3D | 更新日期: 2023-09-27 18:03:13

我有一个场景,其中我有一个带有精灵渲染器和图像的游戏对象。游戏对象有一个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。

  • 脚本在摄像机上,摄像机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;
    }
}

Unity3D Physics.Raycast()从不为真

查看Physics2D.Raycast。据我所知,是物理。光线投射不适用于2D碰撞器。必须使用Physics2D。Raycast。