我创建一个空的gameobject并附加.cs文件。我尝试在鼠标单击位置加载prefab(.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。

最佳答案

您需要将Collider添加到您的GameObject中

对于Physics3D


  描述
  
  向场景中的所有对撞者投射光线。


Physics.Raycast脚本API文档here

对于Physics2D


  描述
  
  向场景中的对撞机投射光线。
  
  从概念上讲,射线广播就像是从某个点发射的激光束
  沿着特定方向在太空中任何与之接触的物体
  光束可以被检测并报告。


Physics2D.Raycast脚本API文档here

关于c# - Unity-Physics.Raycast返回false,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34412167/

10-12 21:32