微信小游戏开发教程

article/2025/8/26 9:35:10

微信小游戏开发教程-前言

自18年年初对开发者开放小游戏接口以后小游戏越来越火热,本文就是对小游戏开发的入门教程,希望这篇文章能够帮到想要入门开发游戏的你。

哈哈哈,看到有人说我故意分成好几篇刷PV,改了一下删了两篇,我觉得文章写太长估计也没人能耐心看玩,还专门分了下页。如果你很直接想直接看实现的话可以去看实现的分析文章,也可以直接看源码。

游戏实现:

微信小游戏开发教程-游戏实现1
微信小游戏开发教程-游戏实现2
微信小游戏开发教程-游戏实现3
微信小游戏开发教程-游戏实现4

项目地址

https://github.com/onlynight/FlappyBird

先看下本教程最后实现的效果

preview

项目地址: https://github.com/onlynight/FlappyBird

微信小游戏开发者文档

https://developers.weixin.qq.com/miniprogram/dev/index.html

这里是微信小游戏的官方开发教程,主要是说明以下几个问题:

  1. 注册小程序/小游戏 appId
  2. 安装开发工具,以及开发工具的使用
  3. 小游戏的项目结构
  4. 小游戏拥有的能力(小游戏能调用那些微信api)
  5. 小游戏的发布/运营

以上这些官方文档已经相当詳細这里就不再赘述,本文主要是教你如何使用微信开发者工具从0开始开发一个小游戏。

面向读者

看这篇文章前需要你具备一定的能力,你最好是:

  1. Java开发
  2. 大前端开发(android/ios/web前端)

你需要有阅读javascript代码的能力。

微信小游戏开发教程-新建项目

1. 新建小游戏项目

在这里插入图片描述

我们这回使用空项目,不要勾选使用模板创建。

2. 添加小游戏必要文件

项目创建好以后我们发现缺少一些必要的文件,我们手动添加即可:

  1. game.json

    这个文件是小游戏的配置文件,我们只做如下设置即可:

    {"deviceOrientation": "portrait","showStatusBar": false
    }
    

    这个文件需要在项目根目录下;
    詳細的其他配置参数,请查看微信的官方文档。

  2. game.js

    这个是小游戏的入口文件,相当于main函数,这里我们先新建一个空文件放着这里,稍后添加必要代码。

3. 导入必要的库

为了让游戏引擎感知不到运行js的环境变化,微信提供了 weapp-adapter.js 用来适配微信内置浏览器不知道的 dom api。当然这个适配器不是必须的,你可以不适用这个适配器。

  1. 项目根目录下新建 src/libs文件夹;

  2. weapp-adapter.js文件复制到 src/libs目录下;

  3. 还有一个库,为了模拟 ES6 中的私有变量,可是可选添加,代码如下:

    // symbol.js/*** 对于ES6中Symbol的极简兼容* 方便模拟私有变量*/let Symbol  = window.Symbol
    let idCounter = 0if (!Symbol) {Symbol = function Symbol(key) {return `__${key}_${Math.floor(Math.random() * 1e9)}_${++idCounter}__`}Symbol.iterator = Symbol('Symbol.iterator')
    }window.Symbol = Symbol
  4. game.js中导入这两个库

// file: game.js
import './src/libs/weapp-adapter'
import './src/libs/symbol'

4. 添加资源文件夹

目录结构如下:

├─audio				// 方音频资源文件
├─images			// 方图片资源文件
└─src				// 代码资源文件├─base			// 基类├─libs			// 库└─runtime		// 运行时组建

在这里插入图片描述

我们在 src 目录下添加代码资源入口文件 main.js,并创建一个类:

// filename: main.jsexport default class Main {
}

在 game.js 中应用这个类,这样整个工程就算创建好啦。

微信小游戏开发教程-2D游戏原理讲解

原理

为了更加形象的描述,这里先上一张图:

在这里插入图片描述

  1. 背景

    a. 首先,我们看到背景好像是一张无限长的图片在向下移动。实际则不然,这是一张顶部和底部刚好重叠的图片。这是一种节省资源讨巧的做法,然后绘制的时候同时绘制两张刚好拼接在一起,下面我们画一张图来形象的说明。

    在这里插入图片描述

    b. 我们看到这张图片是首尾可以拼接到一起的一张图片,然后两张图拼一起一起是下面这样:

    在这里插入图片描述

    c. 下面红色的框代表屏幕显示的区域,就飞机大战的情况我们将背景图的初始状态设置如下:

    在这里插入图片描述

    d. 然后让图片逐渐往下移,我们看到中途的状态是这样:

    在这里插入图片描述

    e. 最后移动到最顶部的时候重置到最初的状态,这样就实现了背景图的无限循环。这是2D游戏中常用的背景图技巧。

    在这里插入图片描述

  2. 物体移动

    游戏中敌人的移动和子弹的移动还有玩家自身机体的移动我们统一称为物体的移动。

    先来看敌人和子弹的移动,这实际上就是一张图片在屏幕上竖直方向上移动。然后不断刷新位置,人眼看到就像是在移动一样。

  3. 边缘检测

    玩家操控的机体我们要控制它在屏幕内,超出屏幕外就会很奇怪,所以这里要做以下边缘检测,当玩家移动到屏幕外时限制到屏幕边缘无法往边缘外移动。

  4. 碰撞检测

    游戏中我们看到,子弹打中敌人的时候就代表了消灭敌人,什么情况下才是打中了敌人呢?当子弹和敌人机体碰撞的时候即代表打中了敌人。如何判断子弹打中了敌人?这里我们用一种较为简单的方法判断,旨在说明碰撞检测原理。

    我们假设敌人飞机在屏幕上是一个放快,子弹也是一个方块。这两个方块在屏幕上都有绝对坐标,当这两个方块的区域有重合的时候即发生了碰撞。这样碰撞检测就很容易做,即判断两个矩形的区域是否重合即可。以上就是所谓的碰撞检测。

游戏实现:

微信小游戏开发教程-游戏实现1
微信小游戏开发教程-游戏实现2
微信小游戏开发教程-游戏实现3
微信小游戏开发教程-游戏实现4


http://chatgpt.dhexx.cn/article/D18pf2D6.shtml

相关文章

支持小游戏开发的“引擎四剑客”

2017年12月28日,微信发布了一款叫“跳一跳”的微信小程序的一个小游戏,无需下载安装,即点即玩,只需要在微信客户端的小程序界面搜索“跳一跳”,点击即可加载进入该游戏玩。游戏小而精,借助于微信巨大的社交…

小程序开发小游戏注意事项

今天研究小游戏开发,总结了一些自己遇到的问题 : 一. 注册appId 用小程序开发的小游戏跟用小程序开发其他项目不是公用的一个appId 如果你现在的小程序账号已经选了别的类目(非游戏),那你就需要另外注册一个账号来单独申请小游戏…

【小程序】快来开发你的第一个微信小游戏(详细流程)

🥳 作者:伯子南 😎 坚信: 好记性不如乱笔头,独乐乐不如众乐乐 💪 个人主页:https://blog.csdn.net/qq_34577234?spm1010.2135.3001.5421 👬🏻 觉得博主文章不错的话&…

小游戏开发

小游戏开发 1、游戏发展历史 广义:一种有组织的玩耍,一般是以娱乐为目的,有时也有教育目的。在英语中,体育比赛(Game)也是游戏,只要其活动本质带有目的、规则、挑战和互动,我们都可以把其归为游戏。 狭义…

小游戏开发指南及过程中的难点问题

如果仅仅针对个人开发者来讲,要独立开发一款大型游戏几乎无可能,更大成功的可能还是开发一款类似《羊了个羊》这样洗脑的小程序游戏。 所以这里主要论述小游戏开发的情况,也就是小程序游戏,首先从小游戏的开发流程来看&#xff1…

oracle数据库中的注释

oracle数据库中的注释 单行注释-- --这是oracle中的单行注释 SELECT SYSDATE FROM dual; 多行注释/**/ /*这是oracle中的多行注释*/ SELECT 6 6 AS "计算结果" FROM dual;

MYSQL数据库如何写注释

方式一 注意:在写注释时,–与注释之间必须要一个空格 select * from stu -- 注释方式二 注意:这种方式比较随意,加不加空格不影响 select * from t_info #注释select * from t_info#注释select * from t_info # 注释方式三 s…

Idea连接数据库,显示表注释

idea设置显示数据库表名注释 操作步骤: View Apperarance Details in Tree View选上

达梦数据库中的注释的使用

在管理规模较大的数据库时,我们往往需要面对大量的表与视图,与此同时在表与视图中可能会存在着许多的字段,让人难以迅速分辨,不利于对于数据库对象的管理。除了在命名时,对于有意义的表、视图及列,应尽量赋…

Jpa 自动建表的时候在数据库中添加注释。

github地址 本项目可以让 Jpa 自动建表的时候在数据库中添加注释。 为什么做这件事 过去想要让 Jpa 在建表的时候自动添加注释一般需要使用 Column#columnDefinition 属性。示例如下: Column(columnDefinition "INT COMMENT ...") private int unitI…

达梦数据库中迁移过来的数据,在Mysql中批量添加注释,修改注释

一、原因 数据是从达梦数据库中迁移过来的,迁移完成注释丢失 二、方法 利用 information_schema.COLUMNS 这个表 三、执行步骤 1.这是达梦数据库导出的注释2.达梦的数数据库数据导出时是和创建表和索引都在一起,因此需要单独把注释这一块的给提取出…

2021.3.17丨致病菌毒力因子(VFDB)数据库注释

摘要 接到一个常规细菌的组装注释项目,不过客户提出想要获取关于组装结果与病毒之间的联系/按之前的操作,dfast没有病毒相关的数据库,无法满足客户需求。一番查阅,发现大家用这个VFDB数据库进行常规的病毒注释,下面将介…

【TP5】获取数据库注释信息

author:咔咔 wechat:fangkangfk table为表名 $data Db::query(SHOW FULL COLUMNS FROM .$table);

SpringBoot中使用Mybatis逆向工程(实体类含数据库注释)

Mybatis逆向工程:根据创建好的数据库表,生成对应的实体类、DAO、映射文件 文章目录 开发环境1.新建SpringBoot应用2.添加逆向工程插件依赖3.执行逆向生成 开发环境 开发工具:IntelliJ IDEA 2021.3.3 (Ultimate Edition)SpringBoot版本&#…

达梦数据库中注释的使用

在管理规模较大的数据库时,我们往往需要面对大量的表与视图,与此同时在表与视图中可能会存在着许多的字段,让人难以迅速分辨,不利于对于数据库对象的管理。除了在命名时,对于有意义的表、视图及列,应尽量赋…

达梦数据库注释的使用方法

在管理规模较大的数据库时,我们往往需要面对大量的表与视图,与此同时在表与视图中可能会存在着许多的字段,让人难以迅速分辨,不利于对于数据库对象的管理。除了在命名时,对于有意义的表、视图及列,应尽量赋…

数据库注释符

数据库注释符 MySQL数据库支持3中注释: 从‘#’字符到结尾;从‘- -’序列到结尾(‘- -’要求第二个破折号后面至少跟一个空格);从/*到*/,可跨行; 例:

k8s安装kuboard面板

前面介绍了k8s的dashboard面板,这里介绍国人开发的kuboard面板,相较于dashboard面板,kuboard面板对很多运维调试功能做了很多增强。 官方文档:https://www.kuboard.cn/install/v3/install.html#kuboard-v3-x-%E7%89%88%E6%9C%AC%E…

[CKA]考试之K8s 版本升级

由于最新的CKA考试改版,不允许存储书签,本博客致力怎么一步步从官网把答案找到,如何修改把题做对,下面开始我们的 CKA之旅 题目为: Task 现有的Kubernetes 集群正在运行版本1.22.0。仅将master节点上的所有 Kuberne…

k8s kuboard-部署skwalking-es

1.导入变量 前提安装:helm export SKYWALKING_RELEASE_NAMEskywalking export SKYWALKING_RELEASE_NAMESPACEskywalking 2.添加仓库 export REPOskywalking helm repo add ${REPO} JFrog 3.安装部署 helm install "${SKYWALKING_RELEASE_NAME}" ${REPO}/…