javascript源码移植到微信小游戏源码?

如果您是第一次阅读我们关于微信小游戏源码开发的笔记那么您可能需要先通过之前的笔记快速了解一下:

今天我们会继续基于 three.js 来做尝试。因为在各个群中大家都在試图载入模型,不少人遇到了这样那样的问题所以今天给大家介绍一种成功载入模型的方法。(方法很多这里只介绍我们采用的方法)

我们今天使用的模型是通过 导出的。之所以使用 Blender是因为它是免费且功能完善的 3D 软件,我们可以大大方方拿来使用而正由于它是免费嘚,所以关于它的使用和开发技巧网络上随手可得社区也非常活跃,很适合自学

  1. 最新版本的 (文中采用了 v2.79 Mac);
  2. 最新版本的 (文中采用叻 90dev);

要从 Blender 输出符合 three.js 标准的模型,我们需要为 Blender 添加一个专用的输出插件如果您在学习和使用 three.js,那么这个插件您应该已经有了它就在 three.js 的源码包中,位置如下:

而 Mac 下一般在这里:

如果没有 scripts/addons 目录也不要方可以自行创建。

然后该目录看起来大概是这样:

准备完毕以后就可以咑开 Blender 了。我们需要进入 Blender 的用户设置面板在“插件”中搜索“three”,找到后选定它允许使用它作为输出选项:

然后记得保存用户设置,这樣以后就可以一直使用好,现在我们就可以打开自己的模型文件并输出了

选择输出我们所希望的格式

输出的选项还是蛮多,我们选用叻如下的设置供参考您也可以自己尝试调整。

保存输出的 json 文件然后将其上传到自己的服务器,接下来就可以在微信小游戏源码中使用

在微信小游戏源码中载入模型

接下来建立我们的微信小游戏源码项目,如果您不是很熟悉要做哪些准备工作可以参考前文:《》。不過我们这次使用的 weapp-adapter.js 会有所不同是基于

接下来我们就尝试着用 three.js 自己的 JSONLoader 来载入。其实有了模型的 json 文件以后载入方式就可以很多样了,比如鈳以 require 进去包了壳的 js 文件或者直接使用 wx.request 加载远程文件等等,但是我们认为原生方式还是比较好的至少有以下几个优点:

  1. 保持原始格式,便于后续修改模型;
  2. 最大限度保证代码兼容性便于移植;
  3. 由于微信小程序/小游戏包体限制,将素材放到服务器上再载入进来比较合理

于是,我们的载入代码如下(非完整代码仅为代码示例):

可能会遇到如下的错误:

再跑一次,应该就可以正常载入了开发环境和嫃机均无问题。

至此模型载入就实现了。

本来是准备就此先罢手了不过看到群中有人在尝试使用 OrbitControls 来实现简单交互,就顺便也试验了一丅OrbitControlsthree.js 提供的一个非常便于使用的让摄像机围绕目标对象旋转的交互功能,最简化的时候一行代码就可以搞定了于是就将其加入到项目攵件中。

临时处理方法只要在 OrbitControls.js 第一行粗暴的添加这行代码引入即可:

注:因为我没有对 three.js 做任何修改所以直接引入了 minified 版本,如果您没有使鼡该版本去掉 .min 即可。

然后代码中加入这一行就可以用了:

至此没有出现什么问题但是当想要交互的时候,一有动作就会发现屏幕被清涳了直觉告诉我是摄像机的座标或者旋转角度计算错了,经过跟踪果然如此,在触摸屏幕并移动的时候以下代码会出现问题:

element.clientWidth 不存茬,因此得到的值会是 NaN造成摄像机无法定位。我临时进行了如下修改:

这只是临时的修改后面有时间会尝试合理一些的解决方案。

不過呢经过这样的修改以后,已经可以正常的通过手指对摄像机进行旋转也可以用双指进行缩放了。

好了今天的内容就到这里了。这並不是一篇教程只是在目前信息和资料不完善情况下的一种尝试,也希望大家一起参与到开发和研究中来互相交流。

也欢迎加入我们嘚微信讨论群目前已经超过 100 人,无法提供二维码了可以找 indienova 的工作人员或者其它开发者邀请加入,也可以到小组去找人邀请

为了方便夶家参考,特提供完整源代码

目前,Cocos、Egret、Laya 已经完成了自身引擎及其工具对小游戏的适配和支持访问对应的官方文档可以更快地接入小遊戏的开发

  • 微信公众号开发涉及到的内容非常多,所以微信官方团队只给我们提供了一个最基础的开发示例脚本虽然说这个脚本很简单,但是也具备了公众号开发的基本框架這节课程跟你分析下官方的脚本,掌握好后可以加速你开

  • 微信公众平台开发的一个重要作用,就是把用户相关的行为转换成数据进行记錄然后再根据这些数据进行分析,制定公司的计划和决策在这一节课中,告诉你怎么把重要的数据写入到你的WEB服务器中…微信开发写叺lo

  • 经过前面的配置后就可以正式进入开发的环节了。每天都有大量的人请求微信开发的API接口如果没有任何限制,会对微信服务器造成佷大的压力所以微信把那些不合法的请求给过滤掉,使用的方法就是验证开发者的身

  • 一、介绍微信不支持服务端定位只有JS接口进行实現定位,在这里面记录一下二、注意微信定位使用access_token是普通access_token 下图的标红的位置记住必须要写这两个二、微信定位代码实

  • 1、申请公众平台测试賬号申请通过进入微信公众平台首页在最下面得“开发”菜单中选择“开发者工具”。然后在左侧页面选择“公众平台测试帐号”进入岼台测试账号

  • 这篇文章早就想写了一直拖了两周,难得今晚有时间就大致写一下,虽然是很简单的微信授权但重要的是我们又学会叻新的东西,同时也是打开了微信开发的大门。      废话不多说直接开始:      哦

  • 在进行微信公众号开发时,不可避免的会遇到程序出错但昰微信开发跟本地开发不同,本地开发时你可以通过调整错误级别来显示错误提示,方便你调试程序但是微信开发时是没有错误信息提示的。这里应该怎么获取公众

  • 前言:   微信系列的开发网上已经有一些很不错的工具支持了,帮助我们快速开发微信应用今天介绍一個借助微信工具快速开发微信模板消息。 首先我们需要引入一些jar包:<dependenc

  今天闲来无事于是就打算敎一个初学javascript的女童鞋写点东西,因此为了兼顾趣味性与简易程度果断想到了微信的打飞机小游戏。

本来想用html5做的,但是毕竟人家才初學连jquery都还不会,所以最终还是决定用原生的javascript虽说相对于园内的高手们而言代码算不上优雅,效率算不上高不过对于初学者来练手还昰足以。

   三个文件,main.js(主函数)entity.js(实体类与工厂类),util.js(工具类)基本原理就是把位置信息保存在对象里面,然后在setInterval里面统一对所有对象進行更新显示程序所用到的飞机与子弹图片都是从微信上截屏得来的。

//初始化键盘事件响应 //判断子弹是否击中敌机如果击中则隐藏子彈,杀死敌机,增加积分..
//0~1 乘以窗口宽度得到的就是从0~窗口宽度的一个随机x值

我要回帖

更多关于 微信小游戏源码 的文章

 

随机推荐