コード例 #1
0
    // 挂接地图操作逻辑
    void SetupGroundOps()
    {
        MapGround.OnClicked       += (float x, float y) => CurrentOpLayer.OnClicked(x, y);
        MapGround.OnStartDragging += (float x, float y) => CurrentOpLayer.OnStartDragging(x, y);
        MapGround.OnDragging      += (float fx, float fy, float cx, float cy) => CurrentOpLayer.OnDragging(fx, fy, cx, cy);
        MapGround.OnEndDragging   += (float fx, float fy, float cx, float cy) => CurrentOpLayer.OnEndDragging(fx, fy, cx, cy);
        MapGround.OnStartScaling  += () => CurrentOpLayer.OnStartScaling();
        MapGround.OnScaling       += (float scale, float cx, float cy) => CurrentOpLayer.OnScaling(scale, cx, cy);

        // 地图缩放移动等
        StageOpsLayer.DefaultStartDraggingHandler += StartDraggingMap;
        StageOpsLayer.DefaultDraggingHandler      += DraggingMap;
        StageOpsLayer.DefaultStartScaling         += StartScaling;
        StageOpsLayer.DefaultScaling += Scaling;
    }
コード例 #2
0
    void Scaling(float scale, float cx, float cy)
    {
        var s = fromScale * scale;

        if (s > 2)
        {
            return;
        }
        var sx   = SceneWorldSize.x / SceneBgSize.x;
        var sy   = SceneWorldSize.y / SceneBgSize.y;
        var sMin = sx > sy ? sx : sy;

        if (s < sMin)
        {
            return;
        }

        CurrentOpLayer.WorldPos2MapPos(cx, cy, out float scx, out float scy);
        SceneOffset.localScale = new Vector3(fromScale * scale, fromScale * scale, 1);
        CurrentOpLayer.MapPos2WorldPos(scx, scy, out float cx2, out float cy2);
        SceneOffset.localPosition += new Vector3(cx - cx2, cy - cy2, 0);
        AdjustOffset();
    }