//0=bottom anchor, 0.5=when anchored center, 1=top. Returns where it should be when transitioning from top private Vector2 GetPositionByAnchorForToporBottom(CallablePanel panel, RectTransform panelRectTransform, TransitionSide topOrBottom) { Vector2 positionToGoTo; if (panelRectTransform.anchorMax.y == 0) { positionToGoTo = new Vector2(panel.originalPos.x, canvasHeight + (panelRectTransform.sizeDelta.y / 2)); } else if (panelRectTransform.anchorMax.y == 0.5) { positionToGoTo = new Vector2(panel.originalPos.x, (canvasHeight / 2) + panelRectTransform.sizeDelta.y / 2); } else { //else if ... == 1f : positionToGoTo = new Vector2(panel.originalPos.x, panelRectTransform.sizeDelta.y); } switch (topOrBottom) { case TransitionSide.top: return(positionToGoTo); case TransitionSide.bottom: return(new Vector2(positionToGoTo.x, positionToGoTo.y * -1)); //just to turn it other way round default: return(positionToGoTo); } }
//based on the anchors : left | center | right //0=left anchor, 0.5=when anchored center, 1=right. Returns where it should be when transitioning from left private Vector2 GetPositionByAnchorForLeftorRight(CallablePanel panel, RectTransform panelRectTransform, TransitionSide leftOrRight) { Vector2 positionToGoTo; if (panelRectTransform.anchorMax.x == 0) { positionToGoTo = new Vector2(-panelRectTransform.sizeDelta.x, panel.originalPos.y); } else if (panelRectTransform.anchorMax.x == 0.5) { positionToGoTo = new Vector2((-panelRectTransform.sizeDelta.x - canvasWidth) / 2f, panel.originalPos.y); } else { //else if ... == 1f : positionToGoTo = new Vector2(-panelRectTransform.sizeDelta.x - canvasWidth / 2f - panelRectTransform.sizeDelta.x / 2f, panel.originalPos.y); } switch (leftOrRight) { case TransitionSide.left: return(positionToGoTo); case TransitionSide.right: return(new Vector2(positionToGoTo.x * -1, positionToGoTo.y)); //just to turn it other way round default: return(positionToGoTo); } }