Unity - Phyics.Raycast返回false

时间:2015-12-22 09:13:16

标签: c# unity3d instantiation raycasting

我创建一个emtpy游戏对象并附加.cs文件。我尝试在鼠标点击位置加载预制(.obj文件)。我的代码是:

    Ray ray;
    RaycastHit hit;
    public GameObject prefab;

    void Start()
    {
    }

    // Update is called once per frame
    void Update()
    {

        if (Input.GetMouseButtonDown(0))
        {
            ray=Camera.main.ScreenPointToRay(Input.mousePosition);

            if (Physics.Raycast(ray, out hit))
            {
                GameObject obj = Instantiate(prefab, new Vector3(hit.point.x, hit.point.y, hit.point.z), Quaternion.identity) as GameObject;

            }
            else
            {
                Debug.Log("Physics.Raycast returns false");
            }
    }

Raycast每次都会返回false。

2 个答案:

答案 0 :(得分:1)

您需要将Collider添加到GameObject

对于Physics3D

  

<强>描述

     

对场景中的所有对撞机投射光线。

Physics.Raycast Script API文档here

对于Physics2D

  

<强>描述

     

对场景中的碰撞者投射光线。

     

光线投射在概念上就像从一个点发射的激光束   在特定方向的太空中。任何与之接触的物体   可以检测并报告光束。

Physics2D.Raycast Script API文档here

答案 1 :(得分:1)

您需要将3d对撞机附加到您的Sprite游戏对象上,以进行raycast检测。

See my complete answer here