unity中将多个图片进行椭圆排序
//保存需要排序的精灵容器
public GameObject[] Sprites;
public Transform centrePoint;//椭圆的中心点
public float anglecheap = ;//每个方块间的角度偏移
//保存位置点
private List<Vector3> location = new List<Vector3>();
private float angle = ;//第一个保证是中心位置的,当前到的角度
private float firstangle = ;//记录第一个角度,用以左右对称
public float r = ;//椭圆的两个弦长
public float R = ;
int size = ;//即对象数组的一半,奇数为总长度+1/2,偶数为一半<pre name="code" class="csharp">// Use this for initialization
void Start()
{//初始化size
if (Sprites.Length % == )
{
size = Sprites.Length / ;
}
else
{
size = (Sprites.Length + ) / ;
}
//排序分级显示
makespriteSort();
//重置渲染层级
ResetDeep();
}
//给这些精灵排序显示
void makespriteSort()
{
//取出椭圆的中心点
Vector3 center = centrePoint.position;
//判断该数组的个数奇偶性,如果是偶数,那么需要留出一个来放到对面
if (Sprites.Length % == )
{
//右半边
for (int i = ; i < size; i++)
{
Sprites[i].transform.position = getPosition(angle, center); angle += anglecheap;
}
//第一个已经得是左边了
angle = firstangle - anglecheap;
//左半边
for (int i = size; i < Sprites.Length - ; i++)
{
Sprites[i].transform.position = getPosition(angle, center);
angle -= anglecheap; }
//最后一个
Sprites[Sprites.Length - ].transform.position = getPosition(firstangle - , center); return;
}
//如果不是偶数,那么出去中间那个,正好正常显示
else
{
//右半边
for (int i = ; i < size; i++)
{
Sprites[i].transform.position = getPosition(angle, center); angle += anglecheap;
}
//第一个已经得是左边了
angle = firstangle - anglecheap;
//左半边
for (int i = size; i < Sprites.Length; i++)
{
Sprites[i].transform.position = getPosition(angle, center); angle -= anglecheap;
}
return;
} }
//获取当前角度的坐标
Vector3 getPosition(float _angle, Vector3 _centerposition)
{
float hudu = (_angle / 180f) * Mathf.PI;
float cosx = Mathf.Cos(hudu);
float sinx = Mathf.Sin(hudu);
float x = _centerposition.x + R * cosx;
float y = _centerposition.y + r * sinx;
Vector3 point = new Vector3(x, y, );
//添加到容器保存
location.Add(point);
return point;
} //根据当前左右容器调整所有控件的渲染层级
void ResetDeep()
{
int dep = ;
//右半边
for (int i = size - ; i >= ; i--)
{
Sprites[i].GetComponent<Transform>().SetSiblingIndex(dep);
dep++;
}
//dep = 0;
//左半边
for (int i = Sprites.Length - ; i >= size; i--)
{
Sprites[i].GetComponent<Transform>().SetSiblingIndex(dep);
dep++;
}
}
unity中将多个图片进行椭圆排序的更多相关文章
- Unity搭建简单的图片服务器
具体要实现的目标是:将图片手动拷贝到服务器,然后在Unity中点击按钮将服务器中的图片加载到Unity中. 首先简答解释下 WAMP(Windows + Apache + Mysql + PHP),一 ...
- unity 内存中切割图片
一般的说我们切割图片是将一张图片资源切割成更小的图片资源,也就是说在资源上就进行了切割,比如ugui上的切割方法. 如果我们有一些情况比如做拼图,可能让玩家自己选择自己的生活照作为拼图的原图. 那么我 ...
- 如何对sharepoint图片库的文件夹的图片按照时间排序并分页显示
/// <summary> /// 获取图片库第一层文件夹--根据文件夹名称排序 /// </summary> /// <param name="siteUrl ...
- Unity 读取资源(图片)
方法一: 采用Resource.Load方法读取,读取在Unity中Assets下Resources目录下的资源名(不采用后缀). //图片放在Asset/Resources/ Texture2D t ...
- C#与unity中base64string和图片互转
C#: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...
- iOS相册中图片按照时间排序
ios相册默认是按照时间从过去到现在排列,图片顺序有正序和逆序,group可以用以下方法来选择顺序 /** @param NSIndexSet 需要获取的相册中图片范围 @param NSEnumer ...
- Unity之读取本地图片
1.下载Opencv for unity. 2.把OpenCVForUnity下的StreamingAssets拖到Assets下. 3.点击Tools->opencv for unity-&g ...
- Unity加载本地图片的2种方式
1. 使用 WWW 加载,详细查看 unity3d 官方文档. 2. 使用 System.IO 加载,lua 代码如下: local File = luanet.import_type("S ...
- Unity加载外部图片
在这里记录一下在 Unity3D 中分别使用 WWW 和 IO 流加载外部图片 使用 WWW 加载 /// <summary> /// 使用 WWW 加载图片,并赋值给 _rawImage ...
随机推荐
- pycharm的简介
pycharm使用 集成开发环境(IDE,Integrated Development Environment ) VIM #经典的linux下的文本编辑器 Emacs #linux 文本编辑器, 比 ...
- 一个不错的git资源站点
https://backlog.com/git-tutorial/cn/stepup/stepup2_8.html
- phpcms网页替换验证码功能 及 搜索功能
在使用phpcms替换网页的时候,除了正常的替换栏目.内容页等,其他的什么验证码啦,提交表单了,搜索功能了,这些在替换的时候可能会对一些默认文件有一些小小 的改变 下面就是自己在失败中成功的过程,最后 ...
- 记mysql中时间相关的一个奇怪问题
发现mysql中类型为时间的字段,在查询时显示的时间是什么是依赖于客户端的,不同的客户端查同一个时间,可能在客户端显示的时间是不一样的.至于这个在哪里配置,以及服务端如何依据这个配置为客户端返回结果, ...
- vim中的分屏操作
title: vim中的分屏操作 date: 2017-11-14 21:45:11 tags: vim categories: 开发工具 在命令行中: vim -On file1 file2 # O ...
- 在java中,将String类型字符串s赋值为null后,将字符串与其他字符串拼接后得到结果出现了null字符串与其他字符连接的样式
String s = null; s += "hello"; System.out.println(s); 结果为:nullhello 原因: 先应用String.valueOf ...
- pypi上传问题
pypi上传过程中报错403 windows 解决办法: 1.建一个新的记事本编辑内容 [distutils]index-servers = pypi [pypi]repository:https:/ ...
- 2440nandflash启动过程再学习
2011-02-13 12:27:05 2440nandflash启动,先是nandflash的前4K自动复制到CPU的0x0地址开始的4K区域. 然后CPU开始运行这4K(刚才copy过来的代码), ...
- 牛客网 完数VS盈数
题目链接:https://www.nowcoder.com/practice/ccc3d1e78014486fb7eed3c50e05c99d?tpId=40&tqId=21351&t ...
- 新手如何学习python(python学习路线图)
现在互联网巨头,都已经转投到人工智能领域,而人工智能最好的编程语言就是python,未来前景显而易见.这是小编给大家整理的python学习路线图,按照此教程一步步的学习来,肯定会对python有更深刻 ...