亚洲国产精品成人无码区,公天天吃我奶躁我的比视频,亚洲国产欧美视频亚洲国产精品一区二区成人片不卡,天天躁日日躁狠狠躁视频2021,起视碰看97视频在线少妇久久久久久人妻无码, 芒果乱码一线二线三线新区 ,亚洲熟妇无码AⅤ不卡在线播放,人妻少妇乱子伦无码专区

400-800-9385
網(wǎng)站建設(shè)資訊詳細(xì)

微信小游戲體驗(yàn)之飛機(jī)大戰(zhàn)簡(jiǎn)單改造

發(fā)表日期:2018-05-03 08:59:38   作者來源:方維網(wǎng)絡(luò)   瀏覽:7371   標(biāo)簽:微信小游戲    
微信推出了小程序版小游戲,跳一跳小游戲火爆微信,從此大家就不用去下載小游戲類APP及使用H5小游戲了。直接用微信小程序玩小游戲,有很多好處,方維網(wǎng)絡(luò)簡(jiǎn)單對(duì)比了下。

1、不用擔(dān)心手機(jī)中毒,因?yàn)樾∮螒蚴俏⑿艃?nèi)置的,而且必須通過微信官方審核才能上架,所以可以放心地玩。
2、有好友排行榜,邀好友對(duì)戰(zhàn)等功能,更多樂趣。
3、不需要下載,直接打開使用。
4、廣告相對(duì)較少,估計(jì)也是微信審核時(shí)的限制,不能影響用戶體驗(yàn)。

有這么多好處,完全可以終結(jié)小游戲類APP和H5小游戲,讓這類開發(fā)者轉(zhuǎn)而開發(fā)微信小游戲。

微信也為開發(fā)者提供了一個(gè)簡(jiǎn)單的DEMO版飛機(jī)大戰(zhàn),雖然簡(jiǎn)單,但是可以讓開發(fā)者了解其開發(fā)流程和方法。根據(jù)方維網(wǎng)絡(luò)了解,其開發(fā)方法跟H5小游戲開發(fā)方式非常相似,因?yàn)槲⑿判∮螒蚓褪歉鶕?jù)H5內(nèi)核運(yùn)行,所以H5小游戲開發(fā)人員是很容易轉(zhuǎn)過來,甚至有些H5小游戲開發(fā)引擎直接可以導(dǎo)出。

第一次使用微信開發(fā)者工具會(huì)為你生成一個(gè)演示版的飛機(jī)大戰(zhàn)小游戲,直接可運(yùn)行使用,里面還包括一些適配器,方便H5開發(fā)人員,還附有代碼結(jié)構(gòu)圖,如下。

源碼目錄

其運(yùn)行圖如下。

微信小游戲-飛機(jī)大戰(zhàn)

筆者看了下源碼,然后覺得沒有難度,就做了一些小改造。

一、增加級(jí)別,級(jí)別越高,敵機(jī)出現(xiàn)幾率越多,主要修改main.js文件enemyGenerate函數(shù)。
 
let enemy_build_speed = 60 //river新增 敵機(jī)生成速度 越小越快
let enemy_speed = 4 //river新增 敵機(jī)移動(dòng)速度 越大越快

/**
* 隨著幀數(shù)變化的敵機(jī)生成邏輯
* 幀數(shù)取模定義成生成的頻率
*/
enemyGenerate() {
let enemy_build_speed_now = enemy_build_speed - this.player.level*2 + 1
let enemy_speed_now = enemy_speed
if (databus.frame % enemy_build_speed_now === 0) {
  let enemy = databus.pool.getItemByClass('enemy', Enemy)
  enemy.init(enemy_speed_now)
enemy.shoot(7)//敵機(jī)發(fā)射子彈
  databus.enemys.push(enemy)
}
}

二、敵機(jī)也可以發(fā)射子彈

在npc目錄復(fù)制bullet.js函數(shù)為bullet2.js作為敵機(jī)子彈類,然后在enemy.js敵機(jī)類增加敵機(jī)射擊函數(shù),然后每次產(chǎn)生敵機(jī)的時(shí)候射出一個(gè)敵機(jī)子彈。

shoot(speed) {
let bullet2 = databus.pool.getItemByClass('bullet2', Bullet2)
bullet2.init(
this.x + this.width / 2 - bullet2.width / 2,
this.y - 10,
speed
)
databus.bullets2.push(bullet2)
}


敵機(jī)發(fā)射子彈

enemyGenerate() {
let enemy_build_speed_now = enemy_build_speed - this.player.level*2 + 1
let enemy_speed_now = enemy_speed
if (databus.frame % enemy_build_speed_now === 0) {
  let enemy = databus.pool.getItemByClass('enemy', Enemy)
  enemy.init(enemy_speed_now)
enemy.shoot(7)//敵機(jī)發(fā)射子彈
  databus.enemys.push(enemy)
}
}

三、增加障礙物,戰(zhàn)機(jī)碰到game over
 
增加一個(gè)za.js類


import Sprite from '../base/sprite'
import DataBus from '../databus'
const BULLET_IMG_SRC = 'images/za1.png'
const BULLET_WIDTH = 64
const BULLET_HEIGHT = 64
const screenWidth = window.innerWidth
const screenHeight = window.innerHeight
const __ = {
speed: Symbol('speed')
}
let databus = new DataBus()
function rnd(start, end) {
return Math.floor(Math.random() * (end - start) + start)
}
export default class Za extends Sprite {
constructor() {
var i = rnd(1,4)
console.log(i)
var img = 'images/za'+i+'.png'
super(img, BULLET_WIDTH, BULLET_HEIGHT)
}
init(speed) {
this.x = rnd(0, window.innerWidth - BULLET_WIDTH)
this.y = -this.height
this[__.speed] = speed
this.visible = true
}
// 每一幀更新子彈位置
update() {
// console.log(this.y)
this.y += this[__.speed]
// console.log(this.y)
// 超出屏幕外回收自身
//sconsole.log(this.height)
if (this.y >= screenHeight)
databus.removeZas(this)
}
}

然后在main.js函數(shù)里隨機(jī)生成


//生成障礙物
zaGenerate() {
if (databus.frame % za_build_speed === 0) {
let za = databus.pool.getItemByClass('za', Za)
za.init(za_speed)
//console.log(za)
databus.zas.push(za)
}
}

最后在碰撞函數(shù)里增加邏輯


//障礙物跟我方飛機(jī)相撞
for (let i = 0, il = databus.zas.length; i < il; i++) {
let za = databus.zas[i]
if (this.player.isCollideWith(za)) {
databus.gameOver = true
break
}
}


四、增加子彈補(bǔ)給,當(dāng)飛機(jī)獲得子彈補(bǔ)給后,火力增加一個(gè),過一段時(shí)間消失。

增加一個(gè)bullet_add.js函數(shù),其生成邏輯和碰撞邏輯類似

import Sprite from '../base/sprite'
import DataBus from '../databus'
const BULLET_IMG_SRC = 'images/bullet.png'
const BULLET_WIDTH = 32
const BULLET_HEIGHT = 60
const screenWidth = window.innerWidth
const screenHeight = window.innerHeight
const __ = {
speed: Symbol('speed')
}
let databus = new DataBus()
function rnd(start, end) {
return Math.floor(Math.random() * (end - start) + start)
}
export default class ButtetAdd extends Sprite {
constructor() {
super(BULLET_IMG_SRC, BULLET_WIDTH, BULLET_HEIGHT)
}
init(speed) {
this.x = rnd(0, window.innerWidth - BULLET_WIDTH)
this.y = -this.height
this[__.speed] = speed
this.visible = true
}
// 每一幀更新子彈位置
update() {
// console.log(this.y)
this.y += this[__.speed]
// console.log(this.y)
// 超出屏幕外回收自身
//sconsole.log(this.height)
if (this.y >= screenHeight)
databus.removeBulletAdds(this)
}
}

這里就不詳細(xì)講解了。


 
如沒特殊注明,文章均為方維網(wǎng)絡(luò)原創(chuàng),轉(zhuǎn)載請(qǐng)注明來自http://www.oulysa.com/news/4286.html
相關(guān)網(wǎng)站設(shè)計(jì)案例
久久精品无码午夜福利理论片| 色婷婷久久综合中文久久蜜桃AV| 人人爽人人澡人人妻免费看| 熟妇女人妻丰满少妇中文字幕| 高h禁伦餐桌上的肉伦| 午夜丁香婷婷综合| 亚洲av美国av产亚洲av图片| 亚洲涩涩AV无码免在线观看| 少妇被躁爽到高潮无码人狍大战| 日韩精品一区二区三区四区| 亚洲色欲色欲www在线| 亚洲中文久久精品无码| 成年女人黄小视频| 国产日韩欧美欧美精品一区二区| 亚洲精品无码久久久久去Q| 欧美精品中文字幕亚洲专区| 欧美日韩A∨在线一区二区| 中文字幕无线码一区二区三区| 国产欧美一区二区精品性色| 亚洲日本va中文字幕久久道具| 欧美日本啪啪一区二区三区| 影音先锋精品男人资源站| 无广告成A人亚洲精V品无码樱花国产| 少妇一晚三次一区二区三区| 最新在线中文字幕电影| 中文字幕无线乱码人妻| 欧美日韩国产码高清综合人成| 欧美国产一区二区三区激情| 年轻内射无码视频,| 91伊人久久大香线蕉| 国产在线精品一区二区三区| 欧美日韩在线视频第一页| 午夜视频无码国产在线观看| 日韩无码第1页国产| 欧美大肥婆大肥bbbbb| 国自产偷精品不卡在线| 五月激情婷婷婷六月丁香| 久久久久精品国产亚洲?Ⅴ| 精品国产日韩亚洲一区在线| 久久国产精品一区| 中文字幕色AV一区二区三区|