齿轮式列表实现代码
来源:互联网 发布:linux互斥锁 实现 编辑:程序博客网 时间:2024/05/21 17:24
项目中要实现一个齿轮式滚动显示列表的代码,并且要求列表围绕着齿轮循环显示
研究了一晚上调试成功代码,贴出来备忘
工程中的样子如图
这里滚动齿轮子弹也会跟着上下拨动,我用一个椭圆形运算将子弹列表的坐标设置到椭圆上,外面加了个Panel用作遮罩,效果是实现出来了,但是并不是很完美,但是至少NGUI中的scroll view是无法动态排列的
附上相关代码
using UnityEngine;[ExecuteInEditMode]//编辑模式下执行public class BeGear : MonoBehaviour{ public GameObject ShowList;//挂载子物体列表 public Vector2 RadiusOffset = new Vector2(180, 360); public float Threshold = 0; Camera m_camera; void Start() { m_camera = FindObjectOfType<UIRoot>().transform.FindChild("Camera").GetComponent<Camera>(); var boxCollider = gameObject.AddMissingComponent<BoxCollider>(); var widget = GetComponent<UIWidget>(); boxCollider.size = new Vector3(widget.width, widget.height, 0); boxCollider.isTrigger = true; //初始化排列子物体 gearRotate(m_camera, Vector2.zero, ShowList.transform, RadiusOffset, Threshold); } void OnDrag(Vector2 delta) { //拖拽时自动排列子物体 gearRotate(m_camera, UICamera.currentTouch.pos, ShowList.transform, RadiusOffset, Threshold); } void gearRotate(Camera uiCamera, Vector2 touchPos, Transform target, Vector2 radiusOffset, float threshold) { UICamera.currentCamera = uiCamera; var anchor = transform.localPosition; var uiPos = uiCamera.ScreenToWorldPoint(new Vector3(touchPos.x, touchPos.y, 0f)); var axis = uiCamera.transform.InverseTransformPoint(uiPos) - anchor; var eulerAngles = Mathf.Atan2(axis.y, axis.x) / Mathf.PI * 180 + 90; var half = (float)target.childCount / 2; transform.localEulerAngles = new Vector3(0, 0, eulerAngles); for (var i = 0; i < target.childCount; i++) { var angle = (i - half) * 45 + eulerAngles; var axisX = Mathf.Cos(angle * Mathf.Deg2Rad) * radiusOffset.x; var axisY = Mathf.Sin(angle * Mathf.Deg2Rad) * radiusOffset.y; target.GetChild(i).localPosition = new Vector3(axisX, axisY, 0); target.GetChild(i).gameObject.SetActive(!(axisX < threshold)); } }}
0 0
- 齿轮式列表实现代码
- d3 齿轮的代码理解
- 实现齿轮转动动画CSS3特效
- 润滑建议大型开式齿轮中
- HashTable(散列表)的实现代码及测试代码
- 数齿轮
- 齿轮基础
- 【搜索】齿轮
- 【搜索】齿轮
- 通过代码动态添加列表item实现列表(不使用listview列表)
- 一段用js实现的下拉列表代码。。
- ....智能的列表分页,两行代码轻松实现....
- android二级listview列表实现代码(高仿大众点评)
- hash table implementation 哈希列表的代码实现
- Android示例代码:如何实现一个文字列表
- EAS BOS 单据列表界面排序的代码实现
- 哈希表-散列表-哈希存储-代码实现
- ASP.NET C#生成下拉列表树实现代码
- 13. Roman to Integer(第十一周)
- 数据库设计——评论回复功能
- 状压dp(3)
- c_SeqList
- Android框架之路——Glide加载图片(结合RecyclerView、CardView)
- 齿轮式列表实现代码
- ConvertUtils
- php文件处理与文件上传
- Java入门学习好书
- API接口JWT方式的Token认证(上),服务器(Laravel)的实现
- ifstat测量Openwrt网络接口速率
- Ubuntu16.04下MongoDB的安装和使用
- Java学习笔记——正则表达式
- C++ vector使用