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

 更新时间:2018年01月04日 09:10:17   作者:JesseLuo  
最近项目结束,很空闲,于是就试着仿照微信跳一跳写了一个极简版的游戏,到底简单到什么程度呢?大家可以参考下本文

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

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

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

下面是实现过程

游戏分析

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

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

游戏过程

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

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

1.掉落在两个方块中央

  

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

  

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

  

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

 

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

 

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

 

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

 

代码

感兴趣的麻烦移步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 再探 - 写一个微信跳一跳极简版游戏,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • js贪心算法 钱币找零问题代码实例

    js贪心算法 钱币找零问题代码实例

    这篇文章主要介绍了js贪心算法 钱币找零问题代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • bootstrap导航、选项卡实现代码

    bootstrap导航、选项卡实现代码

    这篇文章主要为大家详细介绍了bootstrap导航、选项卡的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 深入了解JavaScript中的new关键字

    深入了解JavaScript中的new关键字

    手写new是JS面试题高频考点,实现代码也非常简单,但在实现后小编对其为什么要这样设计有着很深的疑惑,今天就来讲一下为什么要这样设计new的实现吧
    2023-05-05
  • javascript与Python快速排序实例对比

    javascript与Python快速排序实例对比

    这篇文章主要介绍了javascript与Python快速排序实例对比,实例讲述了javascript与Python实现快速排序的简单实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • JavaScript实现简单计算器功能

    JavaScript实现简单计算器功能

    这篇文章主要为大家详细介绍了JavaScript实现简单计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • 使用post方法实现json往返传输数据的方法

    使用post方法实现json往返传输数据的方法

    今天小编就为大家分享一篇关于使用post方法实现json往返传输数据的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • javascript实现花样轮播效果

    javascript实现花样轮播效果

    这篇文章主要为大家详细介绍了javascript实现花样轮播效果,一种是带按钮的轮播,一种是自动轮播,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • JavaScript几种形式的树结构菜单

    JavaScript几种形式的树结构菜单

    今天我主要讲3种不同展示的JavaScript树结构菜单,分别是悬浮层树(Tree)、右键菜单树(ContextMenu)和节点树(TreeMenu),目前都支持无限级层次。
    2010-05-05
  • javascript的23种设计模式示例总结大全

    javascript的23种设计模式示例总结大全

    这篇文章主要为大家介绍了javascript的23种设计模式的总结大全,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 解决FLASH需要点击激活的代码

    解决FLASH需要点击激活的代码

    解决FLASH需要点击激活的代码...
    2006-12-12

最新评论