在 Babylonjs 中查找相机是否已将键盘控件附加或分离到 canvas

find if camera has attached or detached keyboard control to canvas in Babylonjs

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

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

有时我会在我的程序中调出 html 表单并允许用户在表单中输入(或暂时将控件转为自定义 keydown / keyup 控件)所以我使用以下命令分离控件(这样键入的键就不会被 canvas 场景拦截):

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

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

目前,我设置了一个外部变量(但我必须将它放在代码中的许多位置)但我想知道 BabylonJS 中是否有一个函数可以告诉您附加的控制相机名称or boolean true / false if camera control is currently attached?

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

使用#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;
}