这是一张普通的UI界面,在看上去的第一眼,你会觉得这属于3D轮转图,因为围绕着中间3D角色旋转.实际上还是使用了2D轮转图完成了整个界面.
人物是使用了Render Texture纹理添加进Image,通过摄像机照向了藏好的人物模型,并将Image一同加入轮转图中排序(),中间的则是通过重新计算线性插值时的缩放值z
计算的结果为0.75(也可以直接(填答案放入集合排序,也是可以实现效果
)
可以看到排序会一直在中间位置,实现效果
最后的成品上略有不同,是因为计算缩放值的方式有所不同
float scale = max * (1 - p) + min * p;
float scale = (max-min)*p+min;
前者直接缩放每一个Img的边界,后者则是先计算插值再缩放,两种不同的缩放方式形成了不同效果
正常生成的2D轮转图是不能像3D一样倾斜的,在向图片添加新位置时,将Y轴也缩小,就可以形成类似效果
float z = Mathf.Cos(i * ang + allang) * r;
//通过z值计算近大远小 计算 z轴 0-1
float p = (r + z) / (r + r);
float scale = max * (1 - p) + min * p;
list[i].transform.localPosition = new Vector2(x, z/10);