查找相机是否已连接或独立键盘控制到Babylonjs的画布



我有一个Babylonjs中的程序,该程序具有多个相机(免费相机,场景,跟随,有时是弧形相机)。我使用以下内容设置了主动摄像头(S)并附加控制(基于键盘的运动):

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

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

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

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

目前,我设置了一个外部变量(但是我必须将其放在代码中的许多位置),但是我想知道是否有babylonjs中的功能告诉您所附的控制摄像机名称或boolean true/boolean true/false如果当前附加了相机控件?

您可以测试场景。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;
}

最新更新