Unity 3d OnClick忽略特定图层(或仅在特定的laye上触发

时间:2017-03-25 12:48:11

标签: unity3d onclick raycasting

有没有办法在忽略特定图层的同时使标准统一OnClick甚至火? 例如,我在“单位”层上有士兵,在“地面”层上有地面。当我点击士兵时,它会被选中。然后我点击地面,士兵在那里移动。但是,如果我点击被另一名士兵遮挡的地面,它甚至会对那个士兵而不是地面开火,因为他更接近相机。 我是否可以忽略“单位”图层而无需重写整个鼠标点击甚至处理和使用我的自定义光线投射?

编辑: 代码在这里,不管它会显示什么,但

static public void Interact2(Cell target) //this fires from OnClick
    {
        if (GameLogic.Mode == mode.move)
        {
            grid.MoveTo(target);
            if (selected.actionsAvilable[action.move])
                selected.actionsAvilable[action.move] = false;
            else
                selected.actionsAvilable[action.standard] = false;
            GameLogic.Mode = GameLogic.mode.normal;
        }
    }

更多编辑:

void OnMouseDown() {
        if (!UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
            GameLogic.Interact2(this);
    }

1 个答案:

答案 0 :(得分:1)

PhysicsRaycaster / PhysicsRaycaster2D / GraphicsRaycaster组件具有Event Mask属性,允许您限制它们对其进行光线投射的图层。如果要阻止/允许某些图层,则应该从代码更新该属性。