目录

微信小游戏_China_Fighting——前言
微信小游戏_China_Fighting——基础支撑类(sprite、animation、pool)
微信小游戏_China_Fighting——npc类(enemy、mask、sars)
微信小游戏_China_Fighting——player类(hero、button)
微信小游戏_China_Fighting——runtime类(background、fstart1、fstart2、gameinfo、music)
微信小游戏_China_Fighting——lib类(symbol、weapp-adapter)及databus
微信小游戏_China_Fighting——main.js及index.js
微信小游戏_China_Fighting——game.js、game.json、project.config.json
微信小游戏_China_Fighting——后记

正文

本文主要讲解enemy.js、mask.js、sars.js的内容。
    由于将整个js全部粘贴到博文里过于占位置,只对于一些关键部分以及该js代码实现的功能进行讲解。若想获取整个js文件,可以去目录–>前言–>资源链接里下载,内含超详细注释。

三个类其实大致相同,只是在游戏里的含义不同。

  1. sars 代表新型冠状病毒,一旦触碰则游戏结束。
  2. enemy代表障碍物,触碰到会扣除5分的成绩。
  3. mask代表口罩,触碰到会增加10分的成绩。

所以总体实现逻辑都是相同的,都继承了sprite类。如果小伙伴想要在道具被触碰后有相应的动画,可以选择继承anmation类。只需要多初始化一下每一帧的图片即可。

1.三个类总体结构

  • 有屏幕宽高常量: screenWidth 、screenHeight。
  • 自定义的三条道路的位置常量: LEFT_X、MID_X、RIGHT_X。
  • 以及每一个类的图像以及宽高常量(以sars举例):
    SARS_IMG_SRC 、SARS_WIDTH、SARS_HEIGHT。
  • 调用继承的构造函数(以sars举例):
  constructor() {super(SARS_IMG_SRC, SARS_WIDTH, SARS_HEIGHT)}
  • 自定义的初始化速度及位置函数 init():这也是三个类唯一不同的地方。
  • update更新函数(以sars举例):
  update() {this.y += this[__.speed]// 超出屏幕外 对象回收if (this.y > window.innerHeight + this.height)databus.removeSarss(this)}

在每一帧更新sars的y坐标。更新方式是加上自己的速度,当渲染的时候就像是sars以自己的speed向下移动。如果超出了屏幕,则进行对象的回收,回收至数据总线里对应的对象池里。

2.三个类的不同点

三个类唯一的不同点就是init函数。
    本游戏里的逻辑:每一次迎来的三个道具中优先级:sars>enemy>mask。主要是为了增加些游戏难度,gameover的sars每次都要有,扣分的enemy少一些,加分的mask更为少一些。
    所以在初始化位置的时候,优先生成sars对象,其次enemy,最后mask。只有在init_sars时是不需要考虑其他道具的位置的。生成enemy的时候需要考虑纵坐标相同的sars的位置,如果随机出来的位置和已有的sars相同,则当前生成的enemy就不可见,在屏幕上就不会呈现enemy。mask的产生规则同enemy,只不过在生成时要同时考虑sars和enemy。

若有错误或者不解,欢迎评论区留言!

微信小游戏_China_Fighting——npc类(enemy、mask、sars)相关推荐

  1. 微信小游戏_China_Fighting——后记

    目录 微信小游戏_China_Fighting--前言 微信小游戏_China_Fighting--基础支撑类(sprite.animation.pool) 微信小游戏_China_Fighting- ...

  2. 微信小游戏_China_Fighting——game.js、game.json、project.config.json

    目录 微信小游戏_China_Fighting--前言 微信小游戏_China_Fighting--基础支撑类(sprite.animation.pool) 微信小游戏_China_Fighting- ...

  3. 微信小游戏_China_Fighting——前言

    目录 微信小游戏_China_Fighting--前言 微信小游戏_China_Fighting--基础支撑类(sprite.animation.pool) 微信小游戏_China_Fighting- ...

  4. 微信小游戏Banner广告

    为什么80%的码农都做不了架构师?>>>    注意事项 Banner宽度缩放的范围是300到屏幕宽度 Banner不要直接设置style.height而是通过设置style.wid ...

  5. 微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js)

    微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞 ...

  6. 微信小游戏申请注册流程+开发微信小游戏类目需要具备条件

    微信小游戏申请注册流程+开发微信小游戏类目需要具备条件 在这里先讲一下,小程序和小游戏前面的注册流程都是一样的,在注册完毕登录小程序后台后选择类目时需要注意一下,我下面讲解的是已经通过认证的服务号进行 ...

  7. 微信小游戏egret.getDefinitionByName不能获取类的实例

    前言:熟悉MVC框架的小伙伴都知道,在创建界面的时候一般使用egret.getDefinitionByName()来获取到类,从而可以实例化出一个界面类. 今天遇到一个问题:在本地调试好的项目,上到微 ...

  8. 用微信小游戏实现龙舟大战-打粽子

    用微信小游戏实现龙舟大战-打粽子 端午节来啦!各位c粉有没有吃粽子啊! 前言 端午节来啦!今天沉默带大家来做个关于端午节的小游戏,我的设计思路是用龙舟打粽子,类似于飞机大战,只不过我们的场景是在河中. ...

  9. 微信3D小游戏系列一:在微信小游戏中使用threejs

    文章目录 环境配置 下载开发者工具 目录结构 引入Three.js 在小程序中运行 threejs 目标效果 小程序代码 环境配置 下载开发者工具 下载地址: https://developers.w ...

最新文章

  1. Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法
  2. MVC之前的那点事儿系列(2):HttpRuntime详解分析(上)
  3. ST-3806系列单圈编码器 测试说明
  4. Swagger2 @ApiImplicitParam中dataType和paramType的区别?
  5. jenkins 执行构建 并查看结果
  6. 三十、详测 Generics Collections: TObjectList、TObjectQueue、TObjectStack
  7. 5元以下纯铜小摆件_【拍4斤发5斤】早餐饼干网红早餐代餐曲奇酥性小饼干零食500g6元优惠券券后价5.8元...
  8. HTML中IE版本条件注释整理
  9. delphi ado 连接mysql_delphi mysql ado连接
  10. 从零开始的Unity萌导书#1:Hello,Unity!
  11. linux常用命令全集sed,Linux常用命令之find详解
  12. 乐优商城(09)--商品详情
  13. [uboot 移植]uboot 基础知识
  14. 计算机策略组无法打开怎么办,本地组策略打不开,怎么解决
  15. 使用stylebook制作精美界面的方法(firemonkey)
  16. mysql 词频分析_09 使用python完成词频统计
  17. 对话深喉:中小App如何突围?(开发者必看)
  18. linux无法运行sssverify,Synopsys Design Compiler在fedora Core 9下面的安装
  19. 计算机凭据分配在哪里,电脑策略没有凭据分配怎么办
  20. 我帮您_学习资源库,给您学不完的精彩

热门文章

  1. Python面向对象练习(创建类计算正方形周长与面积)
  2. B站弹幕文件protobuf协议的逆向和还原
  3. DC升压高压电源模块可调直流12V24V转80V95V130V330V210V700V
  4. Matlab中使用符号工具箱求解变上限函数积分及其向量化运算
  5. mapv使用(基于mapbox)
  6. 物理学建模及仿真平台Chrono安装
  7. intel Pin简要介绍及示例程序
  8. Windows7下解决所有游戏不能全屏的问题。
  9. 转自eNet硅谷动力: ADSL共享上网设置总结
  10. css样式的加载顺序及覆盖顺序