ScrollRect.OverScrollを取得する
Elastic
やUnrestricted
なScrollRect
で、はみ出したスクロール量を取得する処理。
なんで前回normalizedPosition
でガタガタ言ってたかというと、これがやりたかったからなんだよね。結局使わなかったが。
Vector2 GetOverScrollRanges(ScrollRect scrollRect) { var result = Vector2.zero; var localPosition = scrollRect.content.localPosition; var contentRect = scrollRect.content.rect; var contentPivot = scrollRect.content.pivot; var viewportRect = scrollRect.viewport.rect; if (viewportRect.width <= contentRect.width) { var over = contentRect.xMin + localPosition.x - viewportRect.xMin; var under = -(contentRect.xMax + localPosition.x - viewportRect.xMax); if (over > 0f) { result.x = over; } if (under > 0f) { result.x = -under; } } else { result.x = localPosition.x - Mathf.Lerp(viewportRect.xMin, viewportRect.xMax, contentPivot.x); } if (viewportRect.height <= contentRect.height) { var over = contentRect.yMin + localPosition.y - viewportRect.yMin; var under = -(contentRect.yMax + localPosition.y - viewportRect.yMax); if (over > 0f) { result.y = over; } if (under > 0f) { result.y = -under; } } else { result.y = localPosition.y - Mathf.Lerp(viewportRect.yMin, viewportRect.yMax, contentPivot.y); } return result; }
pivot
やらlocalPosition
やら飛び交ってヒッジョにアレだ。もうちょい綺麗に書けそうなものだが。