惠州市成考高起专招生简章2023已更新(实时/商情)

下栽の地止:https://www.itwangzi.cn/2281.html

three.js-打造微信爆款小游戏跳一跳

最近开始学习Threejs开发,实现了一个简单版本的跳一跳,先看看效果:

知识准备

先了解下3D开发的基本概念。

提到3D开发,可能我们第一想法是晦涩难懂的矩阵变换,复杂的碰撞算法,但其实使用Threejs新手期基本可以不用关心这些。

可以把开发一个3D应用想象成拍一部电影。

在特定的场景下用镜头记录下画面

这一点和国开为什么会出现比比皆是的全托管言论有直接关系,后面我们展开讲。三、国家开放大学的学费多少,为什么会有高有低?这里应该是大家最关心的一点了,没报名的小伙伴想多比较一下,报了名的学员想知道自己被坑了多少。国家开放大学大专的学费正常是在7500-8000之间,本科在9500到10000之间。场景,镜头,画面即对应 Three.js 的 Scene, Camera和 Renderer。简单理解如下:

那么假设你要开发一个“跳一跳”的小游戏,只需要

0?? 新建一个场2021年,开好局、起好步,牢牢抓住提高质量这条生命线,大力推进数字化转型和智能升级,“十四五”开局之年,攻坚克难,乘势而上,再谱新篇,坚定不移地走出一条抓质量创特色的发展之路,得到了中央领导同志的肯定和认可。2020年1月15日,孙春兰同志视察国家开放大学;2021年4月,学校获联合国教科文组织教育信息化最高奖,王沪宁同志作出重要批示,这些都为学校改革发展指明了方向、提供了遵循。景:

1?? 往场景里面加一些方块

国家开放大学将全面贯彻新时代中国特色社会主义思想,以学习宣传贯彻精神为主线,围绕立德树人根本任务整体提升教育教学质量,围绕治理能力建设深入实施教育数字化战略行动,围绕“做优做强”战略加快建成国家老年大学,以优异成绩和实际行动为建设全民终身学习的学习型社会、学习型大国贡献力量。3?? 创建一个相机

4?? 渲染画面

学历要求更加严苛,招生层次发生变化成考改革的过渡期已经过去,接下来就是稳定期,目前正处于改革后的稳定发展期阶段,但是稳定之后还有更高阶段发展也就是转型期,不知成考是否会面临转型期。但是就目前来说,成考加大整治力度这也就直接造成毕业拿证难度加大,不再像是之前的宽进宽出的状况了,而是变成现在的严进严出。yep,完成了!是不是很简单?再完善一下就可以上线跑了。

别急,在上线前我们了解多一些些关于相机的东西。

Three.js 有多种不同的相机,其中 PerspectiveCamera 是利用透视的方式投影物体,这种投影方式跟人眼成像相似,所以用的最多。

上图画的是一个正方体在人眼上投影的原理。

对于一个透视相机来说就遵从近大远小的原则,将可视区域的物体投影展示。Three.js的PerspectiveCamera有以下四个要素:

  • fov: 相机视锥体垂直视角大小,默认50°。角度越小,能投影到的物体就越少

  • aspect: 相机视锥体截面的长宽比例,默认是1

  • near:相机视锥体最近的平面

  • far: 相机视锥体最远的平面

也就是说只有处于 Near 和 Right 平面之间的物体才能被相机拍到,进而被展示渲染出来。

有了上面的准备知识就可以开始开发我们小游戏跳一跳了。

具体实现

简单分析下“跳一跳”的剧本:一个跳块在一堆方块上面跳跃,每次跳跃可以停留在原方块或者下一个方块上,否则游戏结束。

所以我们要有两个对象:方块和跳块。

0x01 方块类

Threejs 新建一个规则的几何体很简单:




const boxGeo = new Three.BoxGeometry(length, length, length);const material = new Three.MeshLambertMaterial({ color });this.cube = new Three.Mesh(boxGeo, material);

几何向量+材质+网格=立方体

在游戏的过程中,蓄力的时候需要做一个压缩立方体高度的动画







只要每一帧都压缩一点点 y 轴就完成了。


方块类需要关注的另一个点是判定某个物体是否在上面,简单示意下坐标:

判定如下:








    isOverHere(point : {x: number, y: number, z: number}) {        let p = this.cube.position;        const gap = 0.5;        return point.x >=p.x && point.x <= (p.x+this.length) &&             point.y >=p.y && point.y <= (p.y+this.length + gap) &&            point.z >=p.z && point.z <= (p.z+this.length)    }

0x10 跳块类

正版的跳一跳是一个棋子模型,有点复杂了,我们先使用一个长方体示意一下。

长方体可以直接继承方块类的方法创建


class Jumper extends Cube {}

跳块和方块的不同在于会飞,要让跳块飞起来, 只要改变对应方向的位置即可,向上飞是Y轴增加,向远处飞是改变X轴或Z轴





















在实现完这两个类之后,还记得我们上面创建的Scene、Camera、Renderer吗,接下来我们就把方块和跳块往Scene里面扔就好了。



jumper.addTo(scene);cube.addTo(scene);

最后我们需要场景动起来只要不断的调用 RAF 即可





const render = (fn?: () => FrameRequestCallback) => {    if (fn) requestAnimationFrame(fn)    renderer.render(scene, camera);}

这么快就做好跳一跳了,那岂不是再过几天原神....?

分享看下评价

举报/反馈

成考专升本视频
返回列表
上一篇:中山市成人高考专升本怎么报名2023已更新(实时/信息)
下一篇:返回列表