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 相关文章推荐
点击下载链接 弹出页面实现代码
Oct 01 Javascript
js计算字符串长度包含的中文是utf8格式
Oct 15 Javascript
jQuery unbind()方法实例详解
Jan 19 Javascript
不定义JQuery插件 不要说会JQuery
Mar 07 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
Nov 16 Javascript
实例解析jQuery工具函数
Dec 01 Javascript
ES6实现的遍历目录函数示例
Apr 07 Javascript
JavaScript hasOwnProperty() 函数实例详解
Aug 04 Javascript
浅谈Node.js 中间件模式
Jun 12 Javascript
element-ui 关于获取select 的label值方法
Aug 24 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
Dec 09 Javascript
微信小程序日历效果
Dec 29 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
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
用PHP读注册表
2006/10/09 PHP
PHP 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
PHP内置过滤器FILTER使用实例
2014/06/25 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
使用jquery动态加载js文件的方法
2014/12/24 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
python 生成目录树及显示文件大小的代码
2009/07/23 Python
Django中使用group_by的方法
2015/05/26 Python
关于Python面向对象编程的知识点总结
2017/02/14 Python
python爬虫之百度API调用方法
2017/06/11 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
Python中turtle库的使用实例
2019/09/09 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
前端隐藏出边界内容的实现方法
2016/04/14 HTML / CSS
Brora官网:英国领先的羊绒服装品牌
2019/08/28 全球购物
音乐学个人的自荐书范文
2013/11/26 职场文书
办护照工作证明
2014/10/01 职场文书
工作作风建设心得体会
2014/10/22 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android
Redis实现分布式锁的五种方法详解
2022/06/14 Redis