node.js环境中的THREE.js
由于制作了一些简单的多人游戏,我选择了THREE.js在浏览器端实现图形。在浏览器上,一切正常 然后我想: 服务器必须签出大多数用户操作。所以我需要将world copy放在服务器上,与用户交互,然后将其状态返回给用户 因此,由于这段代码是为客户端编写的,我只是让它与node.js兼容,然后继续。(良好的碰撞检测,可以使用node.js环境中的THREE.js,node.js,three.js,collision-detection,Node.js,Three.js,Collision Detection,由于制作了一些简单的多人游戏,我选择了THREE.js在浏览器端实现图形。在浏览器上,一切正常 然后我想: 服务器必须签出大多数用户操作。所以我需要将world copy放在服务器上,与用户交互,然后将其状态返回给用户 因此,由于这段代码是为客户端编写的,我只是让它与node.js兼容,然后继续。(良好的碰撞检测,可以使用对象。几何体-是我非常想要的) 结果,碰撞检测代码停止工作。在服务器端,Raycaster在上退出 弦 } else if ( object instanceof TH
对象。几何体-是我非常想要的)
结果,碰撞检测代码停止工作。在服务器端,Raycaster在上退出
弦
} else if ( object instanceof THREE.Mesh ) {
var geometry = object.geometry;
// Checking boundingSphere distance to ray
if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();
sphere.copy( geometry.boundingSphere );
sphere.applyMatrix4( object.matrixWorld );
if ( raycaster.ray.isIntersectionSphere( sphere ) === false ) {
return intersects; // _HERE_
}
这是因为object.matrixWorld
是Identity矩阵。
但是进行了对象初始化<代码>网格。位置
和网格。旋转
在服务器和客户端上是相同的(在浏览器中,raycaster是一个魔咒)
我想,object.matrixWorld
会在renderer.render(self.three\u scene,self.camera)中的某个地方更新代码>。但当然,这不是我在服务器端想要做的
所以问题是:如何在服务器端的每次模拟中更新object.matrixWorld
或者,也许是建议,如果有其他方法可以得到我想要的东西。好的
这很简单
renderer.render
递归更新整个场景的矩阵。递归的入口是Object3D实例的函数
因此,在服务器端使用Raycaster之前,我们应该为可碰撞网格列表中的每个网格调用此方法。为此苦苦挣扎了两个小时“为什么我的Raycaster在本地工作,但在服务器端不工作?”非常感谢,这使它现在也可以在服务器端工作:)