制作3D小汽车游戏(上)

制作3D小汽车游戏(上)

adminkey 2024-10-20 体育 263 次浏览 0个评论
之前一段时间家里和公司的事太多,一直没有时间写博客,最近腾出一段时间,看了一遍官方的examples,收获颇多,想整理一点东西出来,又苦于没有好的东西,three写点东西真是太难了。好吧,今天郭先生就写一个小汽车的3D游戏,如下图 这个游戏几乎没用新的知识点,用了只有有向包围盒OBB。官方demo,线案例请点击博客原文。但是在做游戏之前先来复习几个知识。

制作3D小汽车游戏(上)

在之前的文章有专门写过Box3盒模型,它属于轴对齐包围盒,而OBB包围盒是一种有向的包围盒,显而易见他们的最大区别就是包围盒是否随模型转动,从他们的构造参数就可以看出一些特征 OBB的rotation是一个三维矩阵(而不是欧拉角,注意区别Object3D的rotation属性),它里面包含着盒模型的方向信息,除此之外几乎和Box3相同,OBB的方法和Box3也几乎相同。 在做游戏的过程中我们也需要了解一下欧拉角,它的前三个参数可以十分方便的表示旋转,但是如果绕多个轴同时旋转的时候可能就会遇到难以解决的问题了,这个时候可能就会用到第四个参数order。下面我们举个例子。 如上图有两个几何体(模拟两个轮子)mesh1和mesh2,mesh1车轴在z轴,mesh2在x轴。现在我们只让他们沿车轴转动,只需要改变一个参数即可。 但是当我们现在不仅要让他们沿车轴滚动,还需要沿着y轴传动,具体转动如下 但是得到的结果和我们想要的就不大一样了,mesh1沿着y轴转动的同时沿可以沿着z轴转动,而mesh2旋转就很奇怪。这件事就是因为欧拉角三个维度的旋转是有顺序的,在mesh1中y轴的转动不会受到z轴的影响,因为沿y轴会先于z轴旋转,而mesh2中y轴的转动就会受到x轴的影响,因此我们需要欧拉角的第四个参数order 这样就可以正常旋转了 这节只说一下用到的变量,下一节在继续说。

制作3D小汽车游戏(上)

camera, camera2: 分别是透视相机和正交投影相机 scene, scene2: 分别是主场景和小地图场景 car: 小车模型 orthoCar: 小地图中的小车模型 carHalfSize: 小车半长宽高数据 tyreArray: 包含小车四个轮子的组 steering_wheel: 小车的方向盘 buildObbArray: 建筑物数组 carHeight: 车高 rotateMax: 车转弯最大角度 speedCorrection, rotateCorrection: 速度系数和角度系数 speed: 车速 rotateTyre: 车轮相对于车的角度 rotateRun: 车相对于场景的旋转角度 rotateVector: 车前进方向向量,和rotateRun意义相同(表现形式不同) ivew: 车的视角,0代表车内,1代表车外 下一节我们接着说。 转载请注明地址:郭先生的博客

转载请注明来自壹条体育,本文标题:《制作3D小汽车游戏(上)》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!
Top