我正在基于这个 three.js 指针锁示例创建一个小型多人游戏
我需要在实际玩家屏幕上旋转敌人的头像,这样他才能看到他们正在看的方向,但我不知道如何正确地做到这一点
目前每个敌人都在向服务器发送一个带有他的位置和旋转的对象
{
position: controls.getObject().position,
rotation: controls.getDirection(new THREE.Vector3())
}
服务器接收它并发送给实际玩家,该玩家使用功能在地图中选择相应的敌人网格(化身)并将位置/旋转应用于它
var object = scene.getObjectByName(data.player);
object.position.x = data.position.x;
object.position.y = data.position.y;
object.position.z = data.position.z;
object.rotation.x = data.rotation.y;
object.rotation.y = data.rotation.x;
object.rotation.z = data.rotation.z;
但只有位置有效,旋转不能正常工作:产生的旋转轴似乎是倒置的,它们也会根据实际玩家注视的方向而变化
编辑:
我还尝试将其“克隆”到另一台不同的相机中,如此处rotation.order
所述
var camera2 = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 1000);
camera2.rotation.order = 'YXZ';
var yawObject = controls.getObject();
var pitchObject = yawObject.children[0];
camera2.rotation.set(pitchObject.rotation.x, yawObject.rotation.y, 0);
并让敌人派出
{
position: controls.getObject().position,
rotation: camera2.rotation
}
但旋转仍然是错误的