图1:欢乐麻将微信小游戏版

大部分同学应该都处理过2D麻将桌的适配,从iPhoneX(目前最长的移动设备)到iPad(目前最短的移动设备)

无非就是根据长宽比来选择最适合的适配方式。麒麟子之前写过一遍,传送门:棋牌UI全分辨率适配方案

但3D的适配则不是通过缩放来的,因为3D看到的画面,大部分是调整摄相机参数得来的。我们常见的设备有以下分辨率

2.16 : 1  iPhoneX系列为代表

2:1 华为、小米等2018年后出的Android手机为代表

16:9 苹果6以及同时期的Android手机为代表

1024:768 iPad为代表。

麒麟子打开了麻将的代表作,欢乐麻将。在不同设备下玩了一圈后总结出了欢乐麻将的适配规则。

1、设计分辨率是 16:9, (常见的就是1280 x 720)

2、在宽于16:9的设备上,它什么都没做,只是简单地把桌面保持左右撑满。

3、在高于16:9的设备上,它会保持左右两边不变,让高显示得更多一点。

要实现以上目标,我们需要做如下处理就行。

1、U3D编辑器中,使用16:9的预览窗口,调整好摄相机和画面。

2、切换为1024x768的分辨率,保持摄相机不动(最好是在运行模式下调,这样16:9的参数就不会影响),调整好桌面的缩放和位置。

3、记录下1024x768的参数 缩放和位移。

4、在代码中,通过真实横纵比(宽/高) 与 设计横纵比(1280/720) 进行比较

a、如果更宽(真实横纵比 > 设计横纵比),则将背景的scaleX放大,放大倍数 = 真实横纵比 / 设计横纵比。

b、如果更高(真实横纵比 > 设计横纵比),则将桌面缩小和位移。

缩小的方式就是插值, 设计分辨率下的缩放和位移,我们作为初值,1024 x 768下的值作为目标值(刚刚U3D编辑器中编辑的时候,我们需要把这个值记下来)。 插值的计算如下:(代码中的Laya.stage.height / Laya.stage.width 就是真实高/真实宽,大家根据自己用的引擎来调整 即可)

         let fromRatio = 720 / 1280;let targetRatio = 768 / 1024;let curRatio = Laya.stage.height / Laya.stage.width;let factor = (curRatio - fromRatio) / (targetRatio - fromRatio);

有了这个factor我们只需要做一个线性插值,就能得到不同分辨率下的桌面缩放和位移了。

最后上几张图

iPhone6/7/8效果

iPhoneX效果

iPad效果

代码与工程相关比较多,不方便抽出来,如果有需要的朋友,可以联系我一起探讨。

真3D麻将游戏桌面适配任意分辨率相关推荐

  1. 3D麻将游戏开发通用算法

    通常的3D麻将开发胡牌方式为满足N * ABC + M *DDD +EE 的形式,及存在一个对子(EE),剩余牌均能组成顺子(ABC)或者刻子(DDD). 三国游网络科技专注3D麻将游戏开发多年  专 ...

  2. 有效解决3D游戏边缘锯齿现象及全面理解LayaAir引擎游戏屏幕适配!

    有的时候看到一些3D游戏锯齿感特别明显,与一些开发者沟通后发现,其实很多人并不清楚怎么能去掉明显的锯齿感,而这并不是只有新开发者才遇到的问题,很多游戏研发经验丰富的开发者,甚至是使用LayaAir引擎 ...

  3. 无缝切地图的3D赛车游戏火了,小哥花16个月用JS打造,浏览器免费就能玩

    萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 一位小哥耗时16个月打造的3D版赛车游戏,这两天忽然火了起来. 只需一个浏览器,就能驾车从森林.海滩,"无缝切换"到广袤的沙漠 ...

  4. 【转】265行JavaScript代码的第一人称3D H5游戏Demo

    译文:http://blog.jobbole.com/70956/ 原文:http://www.playfuljs.com/a-first-person-engine-in-265-lines/ 这是 ...

  5. 淘宝人生3周年,聊聊我们3D互动游戏的项目经验

    本文将分享3D互动游戏在开发过程中的思考和经验. 今年我们迈出的第一步 今年是淘宝人生上线 3 周年,我们去年从灵犀互娱手中接过这根接力棒,经过了漫长的开着飞机换引擎的过程.在这之前,我们团队并没有中 ...

  6. Android 3D 魔方游戏的设计与开发

    Android 3D 魔方游戏的设计与开发 5.1 Feature 定义 魔方是一个有趣的益智游戏,相信很多人都玩过.本次毕业设计,欲完成的主要的功能如下: (1) 开始游戏:开始一个新的游戏 (2) ...

  7. 原来微信里有这么多好玩的3D小游戏了

    自从<跳一跳>打开微信小游戏之门伊始,小游戏之势已然燎原.小编体验了上千款微信小游戏,虽然当前仍是以2D休闲游戏为主,但是3D小游戏也越来越多了(悄悄的说一下,小编已知的3D游戏里除了2款 ...

  8. 【干货】通过真机实现页面自动化适配(含直播回放)

    本文根据4月15日淘系技术前端团队出品的「阿里淘系用户体验优化前端实战系列直播」--<通过真机实现页面自动化适配>整理而成. (直播回放) ‍ 引言 作为前端大家是否遇到过在项目快上线的时 ...

  9. 万众期待!!!微店首款 Creator 3D 小游戏来啦,你猜是谁?

    原文作者:杨宗宝 排版视频:张晓衡 哈哈,「杨宗宝」我又来了! 这次是我的一个 Cocos Creator 3D 小游戏哦!估计明天就能上架了晓衡微店了. 你拿到项目后,会有两个项目文件夹: Eude ...

  10. 白鹭引擎助力《迷你世界》研发团队开发3D小游戏版

    <迷你世界>作为国内第一的放置类3D沙盒游戏,依靠三四线城市的游戏市场及垂直媒体的传播途径,研发团队用了短短3年时间就创造出了8000万活跃玩家.5000万玩家原创作品,仅2020年上半年 ...

最新文章

  1. 看动画学算法之:递归和递归树
  2. 【IT笔试面试题整理】删除无序链表中重复的节点
  3. ssm项目直接加html文件,如何把ssm项目和vue项目部署在云服务器(上)
  4. 搭建Spring开发环境并编写第一个Spring小程序
  5. Must read C++ book list
  6. IE6/7下不同的inline-block
  7. mac用什么软件测试硬盘好坏,8款最好的免费Mac工具,检测和修复常见macOS问题
  8. Android人脸支付功能,android支付宝上刷脸支付的人脸识别技术
  9. 查询用户活跃度表登录间隔30天的用户
  10. 计算机基础知识精品课程,校级精品课程《大学计算机基础》简介
  11. 基于SSM的大学生创业众筹平台网站毕业设计源码212000
  12. 畜牧养殖物联网:物联网在畜牧养殖中的应用
  13. try中的return和finally中的return
  14. 保姆级教学——Python+Pygame怎么实现吃豆豆游戏
  15. 为向南太平洋地区扩张 华为在马来西亚设立地区总部
  16. Apollo EM Planner阅读笔记
  17. RZ7886/7888/7889/7899/TA6586小功率直流电机正反转驱动芯片简介
  18. LTE系统调试记录14:频谱感知模块——UE发送感知结果到BS进行处理
  19. Blob 文件下载 ,使用file-saver,判断数据是否为blob
  20. 进服务器显示系统缓冲区空间不足,由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作--解决方法...

热门文章

  1. varbinary mysql,如何在MySQL中存储varbinary?
  2. maven配置ojdbc14
  3. Nginx-详解其原理
  4. 整理了个软件需求规格说明书模板
  5. 腾讯、阿里、搜狐、人人、去哪儿、迅雷等互联网企业产品笔试题目(附个人答案)
  6. 【C#网络编程系列】专题十:实现简单的邮件收发器
  7. 如何让语音芯片与功放芯片之间更好的配合,使得产品音效更好
  8. 大数据采集技术和预处理技术
  9. 国内大公司的开源项目一览表
  10. 如何建语料库_关于语料库的建立