0

如何阻止 RayCast 通过 UI 按钮并击中按钮后面的对撞机?

我尝试过的一些事情:

  • 对撞机覆盖了整个视图,但它位于 (0,0,2)
  • 该按钮处于打开状态 (0,0,-5),因此从相机的角度来看位于对撞机的前面。
  • 我注意到 Canvas 上有一个 Graphic Raycaster 组件,我将其设置为 Blocking Objects: All、Blocking Mask: Everything 和 Ignore Reverse Graphics: True(默认为 true)

所以每次我点击按钮时,它都会执行事件,但我的玩家最终会在按钮后面,因为 RayCast 也击中了按钮后面的另一个碰撞器。

void Start(){
    touchControl = LayerMask.GetMask("TouchControl");
}

// Update is called once per frame
void Update () {

    if (Input.GetMouseButton(0))
    {
        RaycastHit hit;
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        if (Physics.Raycast(ray, out hit, 100, touchControl))
        {
            Destroy(GameObject.FindGameObjectWithTag("Destination"));
            CalculatedDestination = Instantiate(Destination, hit.point, Quaternion.identity);
        }
    }}
4

0 回答 0