C# Unity:ARRaycastManager.Raycast是否仅适用于触摸输入?

C# Unity:ARRaycastManager.Raycast是否仅适用于触摸输入?,c#,unity3d,raycasting,C#,Unity3d,Raycasting,我正在用Unity创建一个AR应用程序。在这个应用程序中,我想将一个对象放置在从AR检测到的平面上 void Update() { if (Input.touchCount > 0) { PlaceObject(Input.GetTouch(0).position); } } public void PlaceObject(Vector2 touchPosition) { if (m_RaycastManager.Raycast(touch

我正在用Unity创建一个AR应用程序。在这个应用程序中,我想将一个对象放置在从AR检测到的平面上

void Update()
{
    if (Input.touchCount > 0)
    {
        PlaceObject(Input.GetTouch(0).position);
    }
}

public void PlaceObject(Vector2 touchPosition)
{
    if (m_RaycastManager.Raycast(touchPosition, s_Hits, TrackableType.PlaneWithinPolygon))
    {
        var hitPose = s_Hits[0].pose;
        if (spawnedObject == null)
        {
            spawnedObject = Instantiate(m_PlacedPrefab, hitPose.position, hitPose.rotation);
        }
        else
        {
            spawnedObject.transform.position = hitPose.position;
        }
    }
}
如果我使用触摸输入(点击检测到的平面),它工作正常,物体将被放置在平面上

当我尝试从另一个控制器使用相同的
touchPosition
调用
PlaceObject
函数时,
ARRaycastManager.Raycast
返回false,它没有找到任何命中对象


如何制作
ARRaycastManager.Raycast
在从函数调用而不是从输入触摸调用时返回命中对象?

touchPosition
只是一个
Vector2
所以我猜它适用于您传入的任何
Vector2
。。。不管它从哪里来。。但是请注意,
touch.position
在像素空间中,因此可能传入的向量太小(例如,如果使用世界空间单位坐标)?你能告诉我们你是如何准确地调用它的吗?我用相同的
touchPosition
从两个地方调用了
PlaceObject
,第一个工作(从输入触摸),第二个不工作(从另一个控制器调用)那么,你如何确认它是完全相同的向量呢?我保存了第一个位置,并在第二个位置使用了它。另外,我打印了它,我确信它是一样的。很抱歉让人恼火,但这毫无意义^^^您的方法采用了
矢量2
。。这是一个结构,它本身不知道它是来自控制器、触摸还是其他任何地方。因此,必须有其他东西无法按预期工作或无法使用传递的值:)