在 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;
}
我在 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;
}