Unity - Phyics.Raycast returns false

本文关键字:returns false Raycast Phyics Unity | 更新日期: 2023-09-27 18:27:39

我创建一个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");
            }
    }

光线投射每次都返回 false。

Unity - Phyics.Raycast returns false

您需要

将碰撞体添加到游戏对象中

对于物理3D

描述

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

Physics.Raycast Script API 文档在这里。

用于物理2D

描述

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

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

Physics2D.Raycast Script API 文档在这里。

您需要将

3D 碰撞体附加到精灵游戏对象上,才能被光线投射检测到。

在这里查看我的完整答案