我创建一个空的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/