Three.js 再探 - 写一个微信跳一跳极简版游戏


Posted in Javascript onJanuary 04, 2018

那么这个游戏到底是简单到什么程度,差不多就是到下面这个程度吧

源码地址:  github.com/luosijie/th…

Three.js 再探 - 写一个微信跳一跳极简版游戏

Three.js 再探 - 写一个微信跳一跳极简版游戏
Three.js 再探 - 写一个微信跳一跳极简版游戏

由于是第一次尝试写游戏, 也不知道套路对不对, 大家看着玩就好, 不要太认真, 不推荐在手机上预览, 坑还没有填好

下面是实现过程

游戏分析

首先分析一下一个这样的游戏需要什么元素

  • Three.js必备元素: 场景,灯光,摄像机
  • 一块又一块的方块
  • 会跳的那个 ,或者叫游戏者
  • 以上

游戏过程

  • 初始一个场景, 场景中有一个 会跳的那个 和 2个方块
  • 鼠标按下储存 能量值
  • 鼠标放开, 会跳的那个 根据 能量值 和 第2个方块的方向 跳出去
  • 会跳的那个 落到方块的上平面时, 根据 位置 判断这一跳是成功还是失败
  • 成功后进入下一步,失败就根据 位置 执行不同的摔倒方式

关于游戏的碰撞, 我们要考虑这几种情况

1.掉落在两个方块中央

Three.js 再探 - 写一个微信跳一跳极简版游戏  

2. 掉落在起跳方块左边上沿

Three.js 再探 - 写一个微信跳一跳极简版游戏  

3. 掉落在左边下一个方块下沿

Three.js 再探 - 写一个微信跳一跳极简版游戏  

4. 掉落在左边下一个方块上沿

Three.js 再探 - 写一个微信跳一跳极简版游戏 

5. 掉落在起跳方块右边上沿

Three.js 再探 - 写一个微信跳一跳极简版游戏 

6. 掉落在右边下一个方块下沿

Three.js 再探 - 写一个微信跳一跳极简版游戏 

7. 掉落在右边下一个方块上沿

Three.js 再探 - 写一个微信跳一跳极简版游戏 

代码

感兴趣的麻烦移步github

主体结构

var Game = function () {
 ...
}
Game.prototype = {
 init: // 初始化
 restart: // 重新开始
 addSuccessFn: // 成功进入下一步,执行外部函数, 用于更新分数
 addFailedFn: // 游戏失败, 执行外部函数, 用于显示失败弹窗
 _createJumper: // 创建 会跳的那个
 _createCube: // 创建方块
 _setLight: // Three.js设置光照
 _setCamera: // Three.js设置相机
 _setRenderer: // Three.js设置渲染器
 _render: // Three.js 执行渲染
 _createHelpers: // Three.js场景辅助工具
 _checkUserAgent: // 检测是否是移动端
 _handleWindowResize: // 窗口缩放绑定函数
 _handleMousedown: // 鼠标按下绑定函数
 _handleMouseup: // 鼠标松开绑定函数
 _fallingRotate: // 会跳的那个 摔落动画
 _falling: // 会跳的那个 摔落
 _checkInCube: // 判断落点位置
 _updateCameraPos: // 更新相机坐标参数
 _updateCamera: // 更新相机
 _setSize: // 设置画布尺寸
}

调用

var game = new Game(success,failed)
game.init()
game.addSuccessFn(success)
game.addFailedFn(failed)
...
// 游戏重新开始,执行函数
function restart () {
 ...
}
// 游戏失败执行函数
function failed(){
 ...
}
// 游戏成功,更新分数
function success (score) {
 ...
}

总结

以上所述是小编给大家介绍的Three.js 再探 - 写一个微信跳一跳极简版游戏,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery获取自定义属性(attr和prop)实例介绍
Apr 21 Javascript
js call方法详细介绍(js 的继承)
Nov 18 Javascript
js调用后台、后台调用前台等方法总结
Apr 17 Javascript
jQuery使用andSelf()来包含之前的选择集
May 19 Javascript
jquery向上向下取整适合分页查询
Sep 06 Javascript
jquery衣服颜色选取插件效果代码分享
Aug 28 Javascript
去除字符串左右两边的空格(实现代码)
May 12 Javascript
jquery.qtip提示信息插件用法简单实例
Jun 17 Javascript
js实现省份下拉菜单效果
Feb 15 Javascript
微信小程序 共用变量值的实现
Jul 12 Javascript
ES6基础之字符串和函数的拓展详解
Aug 22 Javascript
vue实现信息管理系统
May 30 Javascript
JS实现带导航城市列表以及输入搜索功能
Jan 04 #Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
Jan 03 #Javascript
详解Angular2学习笔记之Html属性绑定
Jan 03 #Javascript
Angular2学习笔记之数据绑定的示例代码
Jan 03 #Javascript
vue、react等单页面项目应该这样子部署到服务器
Jan 03 #Javascript
AngularJS实现的2048小游戏功能【附源码下载】
Jan 03 #Javascript
浅谈node模块与npm包管理工具
Jan 03 #Javascript
You might like
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
Vue router安装及使用方法解析
2020/12/02 Vue.js
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
Python中统计函数运行耗时的方法
2015/05/05 Python
python实现线程池的方法
2015/06/30 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
2020/06/02 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
科颜氏加拿大官方网站: Kiehl’s加拿大
2016/08/16 全球购物
联想加拿大官方网站:Lenovo Canada
2018/04/05 全球购物
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
上海中网科技笔试题
2012/02/19 面试题
一些Solaris面试题
2013/03/22 面试题
财务管理专业应届毕业生求职信
2013/09/22 职场文书
汽车维修工岗位职责
2014/02/12 职场文书
三方股东合作协议书
2014/10/28 职场文书
迟到检讨书范文
2015/01/27 职场文书
手机销售员岗位职责
2015/04/11 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle