现在很多公司开始使用游戏化的方式去做产品,让产品呈现给用户时更好玩,以达到增加用户粘性,提升DAU的效果。
同时随着硬件与底层系统的发展,用户的终端对动画的表现能力也越来越强,很多APP以引导用户互动的方式开发业务,所以开发互动类业务将成为前端工程师的必备技能之一。
今天会带大家实现一个坦克大战的小游戏,让大家掌握小游戏开发基本思路和开发流程,开发出属于自己的微信小游戏。
一、为什么要学习⼩游戏开发
1. ⼩游戏发展迅速,许多业务场景都引⼊游戏或者游戏元素以满⾜业务发展,增强⽤户体验。
2. 移动设备硬件配置越来越⾼,⽤户对于⾼质量的app需求越来越强。
⼆、微信⼩游戏是什么
1、定位:
⼩游戏是⼩程序的⼀个类⽬,它即点即玩,⽆需下载安装,体验轻便。同时,⼩游戏与微信 关系链捆绑,可以邀请微信好友、群好友进⾏PK、围观等,充分享受⼩游戏带来的乐趣。
2、优势:
a. api ⻛格简单
b. ⽤户基数⼤ 、强社交属性更易于传播,分享。
c. 微信⼩游戏联合游戏引擎⼚商,增强游戏开发能⼒。
3、Runtime:
游戏引擎通常会包含渲染器(利⽤Canvas和 WebGL为底层技术抽象的图像绘制库),碰撞检测,物理 引擎,声⾳,控制器⽀持,动画等部分。适合⼤型复杂的游戏场景
canvas: 浏览器内核⽀持,可以绘制各种图形以及具备⾼性能的图⽚渲染能⼒。(WebGL: 基于 OpenGL ES ,提供硬件3D加速渲染) 相对静态的简单的游戏完全可以实现。
4、技术选型:游戏引擎/纯webgl+canvas
三、canvas
1、基本概念:
html提供的⼀个标签,简单理解就是⼀张画布,需要获得渲染上下⽂,然后在其上⾯进⾏绘制。渲染上 下⽂简单理解就是⼀根画笔,有2D/3D。
2、基本能⼒:
使用 canvas 来绘制图形 - Web API 接口参考 | MDN
既然我们已经设置了 canvas 环境,我们可以深⼊了解如何在 canvas 上绘制。到本⽂的最后,你将学...
1、fillText(text, x, y [, maxWidth]) //绘制⽂字
2、arc(x, y, radius, startAngle, endAngle, anticlockwise) //绘制⼀个圆弧(顺
时针)
备注: arc() 函数中表示⻆的单位是弧度,不是⻆度。
⻆度与弧度的 js 表达式:弧度=(Math.PI/180)*⻆度。
3、drawImage(image, x, y,width,height) //绘制图⽚
4、ctx.fillStyle = "orange"; //填充颜⾊
5、ctx.strokeStyle = "red"; //图形轮廓颜⾊
6、ctx.save/ctx.restore() //⽅法被调⽤后,当前的状态就被推送到栈中保存
7、ctx.translate(100, 100); //移动画布原点位置
3、使⽤requestAnimationFrame执⾏动画
canvas动画的本质是不断地擦除和重绘,再结合⼀些时间控制的⽅法达到动画的⽬的,其实他跟动画 的本质是⼀样的, 都是在⼀段连续间隔的时间内去频繁的 改变位置。
requestAnimationFrame是浏览器提供的针对动画的HTML5的api,该api是16ms 回调⼀次,我们就可 以在这次回调中更新所有的数据,然后再重绘,这样就实现动画效果了。
window.requestAnimationFrame(callback)
四、实战
1、⻅缝插针类游戏
重点1:利⽤requestAnimationFrame实现游戏循环,从⽽使所有元素动起来。
this.beginGame()
beginGame(){
window.cancelAnimationFrame(this.aniId)
this.aniId = window.requestAnimationFrame(
()=>this.loop(),
canvas
)
}
loop() {
this.update()
this.render()
this.aniId = window.requestAnimationFrame(
()=>this.loop(),
如上代码在loop⽅法中同样调⽤了window.requestAnimationFrame,从⽽使得每⼀帧都会调⽤⼀次 loop(),从⽽实现了游戏的帧循环,那我们只要在update函数⾥⾯,频繁更新⼩球位置就可以使⼩球动起 来了
重点2:三⻆函数
2、坦克⼤战
重点1:loop循环
重点2:⾯向对象思想抽象Sprite精灵绘制基类
重点3:抽象游戏四类元素,wall、enemy、player,bullets
重点4:边缘碰撞(转换为数学问题,两个矩形是否相交)
五、基于webgl的渲染引擎库
1、pixi.js 2D渲染引擎库
http://pixijs.huashengweilai.com/guide/start/1.introduction.html
2、three.js 3D渲染引擎库文章来源:https://www.toymoban.com/news/detail-491872.html
Three.js – JavaScript 3D Library文章来源地址https://www.toymoban.com/news/detail-491872.html
到了这里,关于微信小游戏开发之坦克大战(比羊了个羊还好玩系列)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!