csharp
public GameObject leftController;
public GameObject rightController;
public void OnOptionSelected(InputAction.CallbackContext context)
{
if (InteractionController.Instance.currentModeName != "SideBySideMode") { return; }
if (context.action.name == "SelectOption")
{
if (context.performed)
{
GameObject controller = rightController;
Ray ray = new Ray(controller.transform.position, controller.transform.forward);
RaycastHit hit;
int targetLayerMask = 1 << LayerMask.NameToLayer("SideBySideClickable");
if (Physics.Raycast(ray, out hit, Mathf.Infinity, targetLayerMask))
{
Debug.DrawRay(ray.origin, ray.direction * 1000, Color.red, 10f);
if (hit.collider != null)
{
//logic
}
}
else
{
Debug.DrawRay(ray.origin, ray.direction * 1000, Color.red, 10f)
Debug.Log("No hit in side by side mode");
}
}
}
}
上面的代码得到的raycast是下图红线,而实际上我的controllor指着的是绿线的方向。我凌乱了,怎么得到的raycast不一样。
找到的原因是我的hirarchy view里面,应该把RightController和LeftController拖进去,而我一开始拖动的是XRControllerRight和XRControllerLeft,因此会有上面的问题。
更深层的原因就是因为XRControllerRight和RightController的transform不一样。如果后面再出现这种问题,就需要检查一下设备有没有找对。