Irrlicht与不可见网格的碰撞

7

我正在编写一个类似最终幻想的游戏引擎,其中包括用Irrlicht制作的2D背景和3D模型。为了计算与背景中的物体的碰撞,我使用了一个像这样的无形网格:

enter image description here

我尝试了以下代码,但当玩家到达网格边缘时会掉下来:

TriangleSelector sel = device.SceneManager.CreateTriangleSelector(Program.field.currentScene.walkmeshLoaded, null);
CollisionResponseSceneNodeAnimator coll = device.SceneManager.CreateCollisionResponseAnimator(sel, playerNode);
playerNode.AddAnimator(coll);
coll.Drop();
sel.Drop();
1个回答

1

我没有使用过你正在使用的系统,但已经两天了,所以想试探一下。如果我理解正确的话,听起来你是在使用一个预定义的系统和其中的一个网格。当玩家对象走到网格的边缘时,它会从网格上掉下来,对吗?

看起来发生的情况是,你正在使用的引擎具有某种重力作用,并且该网格位于底部水平面以上(如果有的话)。把这个网格想象成桥梁;如果你走到边缘就会掉下去。你可能需要做的是在网格的边缘设置墙壁,以防止玩家从桥上掉下来,或者如果引擎允许,设置碰撞检测,防止玩家越过边缘。后者是更好的选择,因为我想你可能还要让敌人和NPC遵循这些路径行动,而且墙壁只能增加更多的碰撞检测(可能会妨碍像飞行敌人这样的东西)。

我知道这不是一个确切的答案,但我希望这能给出一些想法。也许我完全错了,但这是我根据提供的信息得出的想法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接