前两天我们的策划想要实现一个像《少年三国志》游戏的大厅里的3D旋转效果,大概是这个样子的:在主界面有九个角色组成了一个椭圆形区域,滑动屏幕的时候,可以按滑动方向的不同可以左右旋转并且前面的会覆盖后面的角色卡片。我试着使用NGUI3.8实现了这个功能。《少年三国志》主界面的效果图如下:

主要思路:使用每个点与x轴的角度计算点在屏幕上的位置。从屏幕上输入位移控制旋转的角度,每帧计算点的位置。遮挡的问题可以使用widged的depth控制。
我设计了这两个类:
EllipsePlugin: 计算出一个椭圆区域,用于摆放需要旋转的物件。这些物件(gameObject)的位置自动生成(其实也可以自己设定,为着程序的方便,改成自动摆放了)
Point: 椭圆上的每个点(gameObject)每帧更新自己的位置。

第一步,我们先实现椭圆区域的旋转。
首先,分析椭圆方程,把(x,y)使用椭圆的长短轴(a长轴,b短轴),中心点坐标(x0,y0)及角度sita表示=>(x, y)=(x0 + a * cos(sita), y0 + b * sin(sita))
然后,我们可以按照需求构建几个类,
第一个控制椭圆区域及输入处理Ellipse
类成员:椭圆中心点,长轴,短轴
类函数:OnDrag(float delta) 把屏幕位移转换成椭圆上的点(gameObject)的角度变化
第二个椭圆上的点:Point
类成员:角度(Angle)
类函数:每帧处理位置变化
按上述方法可以实现拖动旋转

我的初级效果图

接下来是加强实现
实现缩放及遮挡
1. 缩放
   缩放与椭圆上点的y坐标有关,也可以使用长短轴及旋转角度计算,y坐标越大,显示越小,让人感觉距离物体越远
2. 遮挡
   可以使用渲染的深度widget的depth实现,depth值越大,渲染越靠前,也是可以使用椭圆的长短轴及旋转角度表示的
代码实现比较简单,就不上代码了(我的代码写的比较乱)
最后我们要加上动画显示,如果旋转到某一点,松开手指后,要把距离最前面位置的点使用动画的方式停靠过去。
这一块首先要计算停靠点,只要计算椭圆上每个点与停靠点的夹角,得到最小的角度的那个点即可,然后设置动画移动。由于我们使用角度进行所有的逻辑的控制,这里按角度进行更新最方便,设置每帧移动一个很小的角度即可。
我上面说的有点粗略,如果有实现不了的,可以在下面的评论中一起讨论。

效果图如下:

这里的缩放比例都是可以调节的

在我实现完成之后,我发现《少年三国志里》实现没有我想的那么细,它在施动的开始就决定了最终的旋转方向,比如我刚开始向左施动,在鼠标弹起时,不管我是向哪个方向,都会向左滑动到指定的位置。

转载于:https://www.cnblogs.com/longay/p/4402973.html

少年三国志首页效果实现相关推荐

  1. 乾坤符和鸿蒙符,少年三国志四种暗金兵符技能怎么样 四种暗金兵符技能分析...

    兵符系统中不同颜色的兵符给角色助阵的属性值都不相同,红色兵符.金色兵符.暗金兵符,今天我们就来看一下几种暗金兵符的技能都是怎样的吧. [鸿蒙符] 鸿蒙符的混沌破势技能,使得佩戴的武将能在一定条件下驱散 ...

  2. 鸿蒙符和无级符,《少年三国志》乾坤无极评析:乾坤闪避控制废,无极复活两将兴?...

    原标题:<少年三国志>乾坤无极评析:乾坤闪避控制废,无极复活两将兴? 光环问答旨在帮助玩家解决游戏问题,在这里您可以遇见一些志同道合的朋友来交流分享游戏心得,享受纯粹的游戏互助体验,在讨论 ...

  3. 少年三国志服务器关闭注册,少年三国志不能登录怎么办?老司机给你4个解决建议...

    经常听到有小伙伴抱怨会遇到少年三国志不能登录的情况,相信遇到这种情况大多数玩家会认为重启游戏就行,但实际操作之后发现并没有多大效果,该登录不上去还是登录不上去,今天我们就来聊聊少年三国志无法登录的原因 ...

  4. 少年三国志鸿蒙星宿碎片箱,老司机良心总结!少年三国志名将升星碎片开图鉴两不误...

    名将升星要多少碎片这点玩家是否都知道,其实来说知道的玩家可讷讷个并不少,但是来说玩家心里面可能还有非常大的疑惑,那就是少年三国志名将升星好还是开图鉴更好,其实很多老司机都表示,玩家如果知道怎么获得碎片 ...

  5. html制作百度首页的图片不显示,html实现像百度的首页效果一样的背景图(代码)...

    本篇文章给大家带来的内容是关于html实现像百度的首页效果一样的背景图(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 之前在百度知道我提问过这一个问题,后来解决了.不过好多人 ...

  6. Android实现支付宝AR功能,Android RecyclerView 实现支付宝首页效果

    Android RecyclerView 实现支付宝首页效果 [TOC] 虽然我本人不喜欢支付宝的,但是这个网格本身其实还是不错的,项目更新中更改了一个布局为网格模式,类似支付宝.(估计是产品抄袭的= ...

  7. 仿高德地图首页效果,简单代码实现

    2021/11/10日高德的首页效果是这样的 然后我的效果 关键代码 behavior.addBottomSheetCallback(object : BottomSheetBehavior.Bott ...

  8. Android实现豆瓣FM的首页效果

    实现了豆瓣FM的首页效果,如下: 程序代码结构如下: 其中MainActivity是主界面显示,GalleryFlow实现了Gallery的随手势拖动的大小变化,Rotate3dAnimation实现 ...

  9. Android实现了豆瓣FM的首页效果

    实现了豆瓣FM的首页效果,如下: 程序代码结构如下: 其中MainActivity是主界面显示,GalleryFlow实现了Gallery的随手势拖动的大小变化,Rotate3dAnimation实现 ...

最新文章

  1. 死磕 synchronized 底层实现
  2. Mysql数据库和表的增删改查以及数据备份恢复
  3. 2014\Province_C_C++_B\6 奇怪的分式
  4. python新手入门总结_初学python的操作难点总结(新手必看篇)
  5. 纪中B组模拟赛总结(2020.2.3)
  6. nohup 与 linux 程序后台执行
  7. 设计自己的ImageLoader图片加载框架
  8. Java获取姓名的首字母_java获取中文拼音首字母的实例
  9. O2OA办公平台:考勤配置管理手册
  10. UE4 各种玻璃材质制作汇总
  11. Predicting human microbe–disease associations via graph attention networks with inductive matrix论文解析
  12. gitee团队协作使用
  13. oracle 允许级联删除,oracle系列--级联删除和级联更新
  14. Programming Ruby 读书笔记(五)
  15. OpenMeetings(3)----启动顺序解析
  16. 羊了个羊游戏h5网页版源码
  17. mysql 索引底层数据结构与算法
  18. 小型电梯尺寸_家用别墅小型电梯介绍:品牌、大概价格及尺寸等
  19. 客厅的电视挂架如何安装,电视挂架安装知识讲解
  20. 数据分类与聚类的区别

热门文章

  1. Google Summer of Code 2017 开放报名;交互式线上科学期刊 Distill 上线等 | AI 研习社周刊...
  2. 测试姨妈哪一个软件准,哪款经期记录软件更准确 超多女生都在用的两款app
  3. c语言写51单片机八路抢答器,基于AT89C51单片机的八路抢答器设计方案.doc
  4. Win7 Print Spooler服務自动关闭
  5. 基于能力保护原则的桥梁抗震设计
  6. 黑白棋游戏源代码分析
  7. 必看!SQL语法速成手册
  8. 黑马程序员------StringBuffer描述(黑马视频)
  9. mac深色主题下把chrome主题从默认黑色变回以前的默认白色
  10. 2 万字 + 20张图| 细说 Redis 九种数据类型和应用场景