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 相关文章推荐
javascript 控制 html元素 显示/隐藏实现代码
Sep 01 Javascript
javascript:history.go()和History.back()的区别及应用
Nov 25 Javascript
jQuery文本框(input textare)事件绑定方法教程
Apr 24 Javascript
用jquery中插件dialog实现弹框效果实例代码
Nov 15 Javascript
12306验证码破解思路分享
Mar 25 Javascript
flash+jQuery实现可关闭及重复播放的压顶广告
Apr 15 Javascript
二维码图片生成器QRCode.js简单介绍
Aug 18 Javascript
使用JS组件实现带ToolTip验证框的实例代码
Aug 23 Javascript
JavaScript中变量提升与函数提升经典实例分析
Jul 26 Javascript
关于vue编译版本引入的问题的解决
Sep 17 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
Aug 04 Javascript
JavaScript实现鼠标移入随机变换颜色
Nov 24 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
phpmyadmin MySQL 加密配置方法
2009/07/05 PHP
PHP 图片上传实现代码 带详细注释
2010/04/29 PHP
基于Zookeeper的使用详解
2013/05/02 PHP
php实现水仙花数的4个示例分享
2014/04/08 PHP
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
php中实现精确设置session过期时间的方法
2014/07/17 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
快速保存网页中所有图片的方法
2006/06/23 Javascript
Javascript实现动态菜单添加的实例代码
2013/07/05 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
js点击文本框弹出可选择的checkbox复选框
2016/02/03 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
12个提高JavaScript技能的概念(小结)
2019/05/09 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
2019/09/25 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
Python实现的删除重复文件或图片功能示例【去重】
2019/04/23 Python
在Django的View中使用asyncio的方法
2019/07/12 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
HTML5 Canvas标签使用收录
2009/07/07 HTML / CSS
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
政风行风整改方案
2014/10/25 职场文书
避暑山庄导游词
2015/02/04 职场文书
暑假安全保证书
2015/02/28 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
医院感染管理制度
2015/08/05 职场文书
2016猴年春节问候语
2015/11/11 职场文书
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL
Ajax实现异步加载数据
2021/11/17 Javascript