gpt4 book ai didi

javascript - Babylon.js OnIntersectionEnterTrigger 未使用相机触发

转载 作者:行者123 更新时间:2023-12-03 05:32:11 25 4
gpt4 key购买 nike

我正在使用 Babylon.js 2.4.0

我有一个从 .obj 文件加载的网格(沙发形状),以及一个像这样设置的相机:

let camera = new BABYLON.FreeCamera('camera1', new BABYLON.Vector3(0, 2, 0), scene);

camera.checkCollisions = true;
camera.applyGravity = true;
camera.ellipsoid = new BABYLON.Vector3(1, 1, 1);
camera.attachControl(canvas, false);
camera.speed = 0.5;
camera.actionManager = new BABYLON.ActionManager(scene);

我想设置一个事件,以便当我走过沙发时,“交叉点”会记录到控制台:

let action = new BABYLON.ExecuteCodeAction(
{ trigger: BABYLON.ActionManager.OnIntersectionEnterTrigger, parameter: { mesh: couchMesh }},
(evt) => {
console.log("intersection");
}
);

this.camera.actionManager.registerAction(action);

当我走过网格时,控制台上没有记录任何内容。

我在 Babylon.js Playground 上创建了一个示例使用他们提供的示例来检查我的网格或相机设置是否有问题,而且似乎也没有问题( Playground 也不起作用)。

最佳答案

Babylon.js 中的相机没有 Action 管理器,所以即使你设置了它也不会真正起作用。

要使用 Action 管理器使其发挥作用,您可以在相机周围定义一个不可见的框,具有预定义的大小,并将 Action 管理器附加到创建的网格上。然后将网格物体的父级设置为相机,就完成了。这是您进行这些更改的 Playground - http://www.babylonjs-playground.com/#KNXZF#3

另一个解决方案是使用babylon js的内部碰撞系统,并设置相机的onCollide函数来实际执行某些操作:) 这是示例 - http://www.babylonjs-playground.com/#KNXZF#4

请注意,在第二个 Playground 中,摄像机不会穿过盒子,因为碰撞系统会阻止它这样做。我不确定您的用例,因此很难说两者中哪一个效果更好。

如果您需要一个“门”系统(例如,知道玩家何时穿过门),请使用第一种方法。第二个更干净,但有其缺点。

关于javascript - Babylon.js OnIntersectionEnterTrigger 未使用相机触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40897534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com