Exemplo n.º 1
0
    public bool GetPickerPosition(Vector3 pixelCoordinates, PickMask pickMask, out Vector3 pickerPosition, out Pickable pickable)
    {
        LayerMask layerMask;

        switch (pickMask)
        {
        case PickMask.Floor:
            layerMask = constructLayerMask;
            break;

        case PickMask.Construct:
            layerMask = constructLayerMask;
            break;

        case PickMask.Demolish:
            layerMask = demolishLayerMask;
            break;

        default:
            throw new ArgumentOutOfRangeException();
        }
        if (Physics.Raycast(mainCamera.ScreenPointToRay(pixelCoordinates), out RaycastHit hitInfo, 1000, layerMask))
        {
            pickerPosition = hitInfo.point;
            pickable       = hitInfo.collider.gameObject.GetComponent <Pickable>();
            return(true);
        }
        pickerPosition = Vector3.zero;
        pickable       = null;
        return(false);
    }
Exemplo n.º 2
0
    public bool GetPickerTile(Vector3 pixelCoordinates, PickMask pickMask, out Vector3Int pickerTile)
    {
        LayerMask layerMask;

        switch (pickMask)
        {
        case PickMask.Floor:
            layerMask = constructLayerMask;
            break;

        case PickMask.Construct:
            layerMask = constructLayerMask;
            break;

        case PickMask.Demolish:
            layerMask = demolishLayerMask;
            break;

        default:
            throw new ArgumentOutOfRangeException();
        }
        if (Physics.Raycast(mainCamera.ScreenPointToRay(pixelCoordinates), out RaycastHit hitInfo, 1000, layerMask))
        {
            pickerTile   = hitInfo.point.RoundDown();
            pickerTile.y = 0;
            return(true);
        }
        pickerTile = Vector3Int.zero;
        return(false);
    }