unity 卡牌聚拢算法

前言

笔者在做项目时遇到了一个要聚拢手牌,像三国杀里的手牌聚拢的效果
大概效果图:

代码

public Dictionary<int, int> level_index ;//全部牌数据,卡牌id-卡牌阶级
//objects是需要洗的牌数
public void Xipai(GameObject[] objects)
{ float readonly position1=-2.28f;
float readonly position2=-3.5f;
float readonly allLength=4.9f;
//float readonly rotation=1f; //旋转间隔系数
int temp;
int counta = objects.Length;
foreach(GameObject t in kapai)
{
if(!objects.Contains(t)){
t.SetActive(false);
}
}
for(int i=0;i<counta;i++)
{
temp = i + 1;
if (!objects[i].activeSelf) objects[i].SetActive(true);
//距离聚拢
//4.9 -0.19
objects[i].transform.position = new Vector3(position2 + allLength / (counta + 1f) * (temp - 1f) + (temp - 1f) * 1f, position1, 0f);
//旋转成扇形
float t = (counta % 2f == 1f ? 1f : 0f);//奇偶判断器
float t1 = counta - t;//奇变偶
float t2 = t1 / 2;//取中间值
if (t == 1f && temp == t2 + 1)
{
objects[i].transform.localEulerAngles = new Vector3(0f, 0f, 0f);
}
else
{
objects[i].transform.localEulerAngles = new Vector3(0f, 0f, (temp <= t2 ? 90f : 0f) - 180f / (counta + 1f) * (temp - (temp > t2 ? t2 + t : 0f)) + (temp <= t2 ? -1f : 1f) * (level_index.Count - counta) * temp * rotation);
}
}
}

最新文章

  1. ios基础篇(二十三)—— 定时器NSTimer与图片的自动切换
  2. MP3播放器团队项目
  3. STM32 控制红外线收发
  4. Brackets(区间dp)
  5. ES 父子文档查询
  6. MongoDB服务器启动异常 1067
  7. EF 命令
  8. 关于Action返回结果类型的事儿(下)
  9. Python中def的用法
  10. 怎样学习使用libiconv库
  11. dnsmasq服务的安装与配置
  12. uwsgi常用配置
  13. Django+Vue打造购物网站(十)
  14. Saiku根据入参日期查询出对应的数据(二十)
  15. Web测试和App测试有什么区别
  16. Mining Station on the Sea HDU - 2448(费用流 || 最短路 &amp;&amp; hc)
  17. Codeforces 706C - Hard problem - [DP]
  18. 记录tiny6410 jlink 命令行调试linux-2.6.38内核
  19. oracl数据库中的substr()函数的用法
  20. [整理]JS中的状态机

热门文章

  1. dataframe 检查缺失值
  2. Docker 命令自动补全?要的
  3. 第 5 篇 Scrum 冲刺博客
  4. js原生方法reduce实现
  5. 题解-CF1444C Team-Building
  6. Angular:自定义属性指令
  7. docker 添加Portainer容器图形化管理工具
  8. jmeter__编写脚本学习笔记、备忘
  9. Sql Server 数据把列根据指定的内容拆分数据
  10. Mac电脑完美解决 BasicIPv6ValidationError 问题,通过命令行更改ip设置