Это связано с Three.js + Socket IO + CANNON.js. У меня есть объект CANNON.RigidBody на моем сервере SERVER, который я не могу отправить, как есть. Таким образом, я преобразовать его так:Преобразование объекта javaScript в другой тип объекта
// Create a sphere
var mass = 5,
radius = 1.8;
var sphereShape = new CANNON.Sphere(radius);
var physicsMaterial = new CANNON.Material("slipperyMaterial");
var sphereBody = new CANNON.RigidBody(mass, sphereShape, physicsMaterial);
sphereBody.position.set(0, 10, 0);
sphereBody.linearDamping = 0.9;
cannonWorld.add(sphereBody);
cannonEntities[(numBodies++).toString()] = sphereBody;
player = {
type: "player",
data: {
id:((numBodies++).toString()),
position: sphereBody.position,
quaternion: sphereBody.quaternion,
velocity: sphereBody.velocity,
radius:radius,
mass:mass
} }
и послал его к моему клиенту ....
broadcastJsonEvent(JSON.stringify(player))
В моем КЛИЕНТА я пройти этот «игрок» объект в мой контроль, Обычно вместо одного игрока, будет передавать объект CANNON.RigidBody.
controls = new PointerLockControls(camera, player);
scene.add(controls.getObject());
Потому что я не могу отправить полный объект, который .... CANNON.RigidBody я отправить его, как этот объект игрока, а в PointerLockControls последняя строка выглядит следующим образом ... И это, где все терпит неудачу ,
cannonBody.position.copy(yawObject.position);
В настоящее время объект моего игрока не имеет метода копирования. Что я могу сделать? Пожалуйста, помогите. Это то, что я пробовал. Помните cannonBody = игрок !! И даже если я получаю метод копирования , он по-прежнему не работает.
var copyBody = new CANNON.Vec3(cannonBody.position.x,cannonBody.position.y,cannonBody.position.z);
cannonBody = $.extend(cannonBody,new CANNON.RigidBody(cannonBody.mass,new CANNON.Sphere(1.8),new CANNON.Material("slipperyMaterial")));
cannonBody.position = $.extend(copyBody);
cannonBody.position.copy(yawObject.position);
И даже если я получаю метод копирования он все еще не работает. :(
Что вы продлеваете? 'cannonBody.position = $ .extend (copyBody);' –
Я расширяю Vector3 ... x, y, z. Таким образом, в основном на моем сервере у меня есть объект CANNON.RigidBody, который я беру некоторые свойства и помещаю его в объект «player» и отправляю его клиенту. Но теперь на клиенте мне нужен тип CANNON.RigidBody origianl, а объект «player» имеет объект типа, а не CANNON.RigidBody. поэтому я пытаюсь преобразовать его. – Thor88