微信小游戏
文章平均质量分 78
介绍微信小游戏实战中遇到的问题
火星牛
码农,兼爱诗词绘画,delphi,nodejs,重庆大学
展开
-
从three.js的字体文件中精简提取自己需要的字符
three.js的中文字体文件很大,以微软雅黑为例,有26M。如果程序中只用到了部分汉字,那么可以瘦身一下,只保留自己需要的汉字。three.js的字体文件格式是这样的:module.exports={ "glyphs":{ "A":{ "ha":977, "x_min":16, "x_max":961, "o":"m 961 0 l 811 0 l 704 288 l 267 288 l 165 0 l 16 0 l 416 105原创 2021-10-27 17:56:54 · 933 阅读 · 0 评论 -
在微信小游戏中使用tensorflow的face-landmarks-detection
做人脸识别,先要获取面部特征,然后提取面部图片。https://www.npmjs.com/package/@tensorflow-models/face-landmarks-detection查看这个包的源码,发现要下载3个模型文件:facemesh:https://tfhub.dev/mediapipe/tfjs-model/facemesh/1/default/1 iris:https://tfhub.dev/mediapipe/tfjs-model/iris/1/default/2原创 2021-06-21 18:03:07 · 2006 阅读 · 4 评论 -
Three.js中更新Line时的内存泄露
之前用这种方式创建Line和在render中更新line两点位置:function createLinkLine(parent, son) { let points = [parent.position, son.position]; let geometry = new THREE.BufferGeometry(); geometry.setFromPoints(points); let line = new THREE.Line(geometry, g_linkLineMateri原创 2021-03-17 22:20:30 · 920 阅读 · 0 评论 -
微信小游戏中threejs从本地加载gltf模型
参考https://threejs.org/examples/#webgl_animation_skinning_morph在three.js的\examples\js\loaders下,有一个GLTFLoader.js文件用来加载gltf模型。但是在微信小游戏环境下,会遇到一些特殊的问题。(1)把RobotExpressive.glb模型文件放在代码目录中时,上传会提示“文件类型不在白名单中,不会被上传”,这个问题的解释在:https://developers.weixin.qq.com/min.原创 2021-01-13 18:14:46 · 4647 阅读 · 12 评论 -
微信小游戏用tensorflow.js人体姿势PoseNet控制
tensorflow.js官方特别支持了微信小程序,看tfjs-core,fjs-backend-webgl等等模块的dist下都一个单独的miniprogram目录。还特别提供了一个微信小程序的插件:https://github.com/tensorflow/tfjs-wechattensorflow.js对微信小游戏还不支持,但是可以类似的实现,但是效率不高;小游戏不支持插件,直接使用tfjs-webchat源码,我名称改为tfjs-plugin。试试一个头部姿势,左右,点头控制:基原创 2020-11-21 21:18:40 · 2511 阅读 · 2 评论 -
微信小游戏中three.js离屏画布
国庆8天长假,重庆之行因故未成,偶得闲,用three.js结合cannon.js写个3D小游戏耍耍。在微信小游戏中,把three.js的3D内容在离屏画布处理,然后复制到在屏画布,方法是:let c_toolbarHeight=140;let sysInfo=wx.getSystemInfoSync();require('./js/libs/weapp-adapter.js');var canvas_webGL=window.canvas;canvas_webGL.width = s原创 2020-10-10 19:02:44 · 2948 阅读 · 13 评论 -
cannon.js如何让球变大或缩小
两个球碰撞后,合并成一个大球(摧毁一个,把另一个变大),或者销毁时,一点点逐渐缩小。涉及到几个对象:CANNON.Sphere CANNON.Body THREE.SphereGeometry THREE.MeshCANNON.Body和THREE.Mesh本身不用变,直径参数在CANNON.Sphere和THREE.SphereGeometry上,需要改变。改变CANNON.Sphere有2种方法:(1)重新创建一个function getBallRadius(value){原创 2020-10-04 19:14:05 · 708 阅读 · 0 评论 -
cannon.js如何限制刚体球心在一个平面上运动
cannon.js的地址:http://schteppe.github.io/cannon.js/这几天在写一个3D游戏:球从y轴掉下来,堆叠后,因为重力原因,可能会向x,y,z三个轴随机跌落,但我只想要它在x和y轴跌落,不要在z轴跌落。让球在一个平面上运动,很容易做到,增加一个CANNON.Plane就可以。但是要让各种大小的球的球心在一个平面运动,如何做呢?查了官方API,没有查到方法,自己在render时把全部body的position.z设置为0: //限定球体只原创 2020-10-04 18:41:32 · 966 阅读 · 0 评论 -
微信小游戏为何fillText绘制的文字是模糊的?
微信官方说调整了canvas的缩放策略,它把物理像素和逻辑像素自动做了缩放,使我们不用考虑pixelRatio,因此字体和图片都模糊了,如果要显示高清,就要自己处理了。官方说明如下:https://developers.weixin.qq.com/community/develop/doc/00040c9903023848e0d7bd6205a401?highLine=%25E6%2596...原创 2020-03-22 16:48:28 · 2312 阅读 · 4 评论 -
微信小游戏重新激活时黑屏
微信小游戏,打开玩一会儿后,手动切换到后台,然后再切回来,会出现黑屏,但是动一下游戏中的按钮,又可以看到了。用wx.onShow()方法,把离屏画布再往在屏画布复制一下:wx.onShow(function(){ updateCanvas();});但是发现还是没有效果,奇怪的是动一下游戏中的按钮又显示了(因为有复制画布),因此怀疑时机不对,加个timer试试:wx.on...原创 2020-03-22 16:14:24 · 1175 阅读 · 2 评论 -
微信小游戏花屏
周末手痒,试了试微信小游戏的开发,写个俄罗斯方块。先创建画布:/** * 俄罗斯方块 * @author wxh */wx.tmGlobal = { name:"清新俄罗斯方块"};wx.tmGlobal.sysInfo = wx.getSystemInfoSync();//console.log("sysInfo:",wx.tmGlobal.sysInfo);wx....原创 2019-08-04 20:00:39 · 1363 阅读 · 5 评论