0

我在 BabylonJS 中有一个程序,它有多个摄像头(免费摄像头、场景、跟随,有时还有弧形摄像头)。我使用以下设置活动相机并附加控制(基于键盘的移动):

scene.activeCameras[0] = camera;
camera.attachControl(canvas);

有时我会在我的程序中调出 html 表单并允许用户输入表单(或暂时将控件切换到自定义 keydown / keyup 控件),因此我使用以下内容来分离控件(以便键入的键是未被画布场景拦截):

for (var i = 0;i < scene.activeCameras.length;i++) {
    scene.activeCameras[i].detachControl(canvas);
}

然后我在完成后再次附加。这很好用,但有时我需要测试是否附加了控件。

目前,我设置了一个外部变量(但我必须将它放在我的代码中的许多位置)但我想知道BabylonJS 中是否有一个函数可以告诉您附加的控制相机名称或布尔值 true / false 如果相机控制当前是随附的?

4

2 回答 2

1

你可以测试 scene.activeCameras[i].inputs.attachedElement

于 2017-09-20T21:50:04.243 回答
0

使用 #DavidCatuhe 的答案,我能够编写其他人可能会觉得有用的这个函数。谢谢!

function iscamaraattached() {
    var attached = false;
    if (scene.activeCameras != null) {
        for (var i=0;i < scene.activeCameras.length;i++) {
            if (scene.activeCameras[i].inputs.attachedElement != null) {
console.log("i=" + i + " - " + scene.activeCameras[i].inputs.attachedElement.id);
                attached = true;
            }
        }
    }
    return attached;
}
于 2017-09-20T22:30:01.590 回答