分页滚动功能扩展之加入旋转角度 RotationScaleScrollView
using System.Collections; using System.Collections.Generic; using UnityEngine; public class RotationScaleScrollView : ScalePageScrollView { public float rotation; // 声明一个字段,旋转角度 protected override void Update() //用于监听角度 { base.Update(); ListenerItemRotation(); } public void ListenerItemRotation() { if (nextPage == lastPage) { return; } float percent = (rect.horizontalNormalizedPosition - pages[lastPage]) / (pages[nextPage] - pages[lastPage]); //5个好友 的旋转角度 if (nextPage > currentPage ) //判断是上一页还是下一页 { items[lastPage].transform.localRotation = Quaternion.Euler(-Vector3.Lerp(Vector3.zero, new Vector3(0, rotation, 0), percent)); //zero 到rotation 包装成一个角度,进行封装 ??? items[nextPage].transform.localRotation = Quaternion.Euler(Vector3.Lerp(Vector3.zero, new Vector3(0, rotation, 0), 1 - percent)); } else { items[lastPage].transform.localRotation = Quaternion.Euler(-Vector3.Lerp(Vector3.zero, new Vector3(0, rotation, 0), percent)); //zero 到rotation 包装成一个角度,进行封装 ??? items[nextPage].transform.localRotation = Quaternion.Euler(Vector3.Lerp(Vector3.zero, new Vector3(0, rotation, 0), 1 - percent)); } for (int i = 0; i < items.Length; i++) { if (i != lastPage && i != nextPage) { if (i < currentPage) //小于当前页 就说明是负的 { items[i].transform.localRotation = Quaternion.Euler(new Vector3(0, -rotation, 0)); } else if (i == currentPage) { //items[i].transform.localRotation = Quaternion.Euler(new Vector3(0, 0, 0)); } else if (i > currentPage) { items[i].transform.localRotation = Quaternion.Euler(new Vector3(0, rotation, 0)); } } } } }