Unity轮转图的队列排序

在这里插入图片描述
这是一张普通的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);

猜你喜欢

转载自blog.csdn.net/m0_57252175/article/details/132439847