Есть ли способ заставить стандартное единство OnClick даже срабатывать, игнорируя определенные слои? Например, у меня есть армия солдат на слое «Юниты» и земля на слое «Земля». Когда я нажимаю на солдата, он выделяется. Затем я нажимаю на землю, солдат движется туда. Но если я нажму на землю, скрытую другим солдатом, она стреляет даже по этому солдату, а не по земле, потому что он ближе к камере. Могу ли я игнорировать слой «Единицы», не переписывая весь щелчок мыши, даже обработку и использование моего пользовательского raycast?
РЕДАКТИРОВАТЬ: код здесь, не думайте, что он покажет что-нибудь, кроме
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);
}
Camera.main.GetComponent<UnityEngine.EventSystems.PhysicsRaycaster>().eventMask = desired_layer_mask
25.03.2017