我有一个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;
}