threejs不火原因:首先threejs的相关文档等还不是很成熟,功能还有方法还不够完善,官方也没有太多的东西去解释这个东西。不推荐用来做游戏。 。
threejsboxHelper.geometry.computeBoundingBox();var box =boxHelper.geometry.boundingBox;var maxDiameter = Math.max((box.max.x - box.min.x), (box.max.y - box.min.y), (box.max.z - box.min.z))。
threejsACT(Action Game)动作游戏:
threejs玩家控制游戏人物用各种方式消灭敌人或保存自己以过关的游戏,不刻意追求故事情节,设计主旨是面向普通玩家,以纯粹的娱乐休闲为目的,一般有少部分简单的解谜成份,操作简单,易于上手,紧张刺激,属于“大众化”游戏。
threejsACT游戏讲究打击的爽快感和流畅的游戏感觉,其中日本CAPCOM公司出的动作游戏最具代表性。在2D系统上来说,应该是在卷动(横向,纵向)的背景上,根据代表玩家的活动块与代表敌人的活动块以攻击判定和被攻击判定进行碰撞计算,加入各种视觉,听觉效果而成的游戏。
不得不承认,这是threejs长久以来的bug,换了好多版本,一直没有处理这个bug,
在早期版本中我们可以用如下方法去实现,
objMesh.centroid = new THREE.Vector3();。
for (var i = 0, l = geom.vertices.length; i < l; i++) {。
objMesh.centroid.add(geom.vertices[i].clone());。
objMesh.centroid.divideScalar(geom.vertices.length);。
var offset = objMesh.centroid.clone();。
objMesh.geometry.applyMatrix(new THREE.Matrix4().makeTranslation(-offset.x, -offset.y, -offset.z));。
objMesh.position.copy(objMesh.centroid);。
下载地址:
http://www.jspeedprinter.com/download.asp?kindid1=65。
ThingJS 使用角度控制物体旋转。
通常使用如下属性和接口控制物体旋转:
在世界坐标系下,使用 angles 属性来设置或访问旋转信息。
obj.angles = [0,45,0] //设置世界坐标系Y轴向旋转45角度 。
在父物体坐标系下,使用 localAngles 属性来设置或访问旋转信息。
obj.localAngles = [0,45,0] //设置父物体坐标系Y轴向旋转45角度 。
在自身坐标系下,使用如下接口方法:
//使用rotate,可输入角度和轴向。设置沿给定轴向转一定角度,传入的旋转轴是自身坐标系下的轴方向 obj.rotate( 45, [0,1,0]) //沿自身x轴向旋转,等同于 obj.rotate( 30, [1,0,0]) obj.rotateX(30) //沿自身y轴向旋转,等同于 obj.rotate( 90, [0,1,0]) obj.rotateY(90)。
//沿自身z轴向旋转,等同于 obj.rotate( -45, [0,0,1]) obj.rotateZ(-45) 。
我们还可以使用 lookAt 接口方法,使得物体的观察方向一直对准一个位置或物体。
//让物体面向[0,1,0],该坐标是在世界坐标下obj.lookAt( [0,1,0]) //让物体一直面向摄影机obj.lookAt( app.camera ) //让物体一直面向一个物体obj.lookAt( obj ) //让物体一直面向一个物体,同时物体沿自身Y轴向再旋转90度obj.lookAt( obj, [0,90,0] ) //取消lookAt功能obj.lookAt( null ) 。
查看示例网页链接
正常情况下,子物体会随着父物体旋转而一起旋转,如果想控制子物体不随父物体旋转,可通过设置子物体的 inheritAngles 属性为 false 而实现。