c# - 与不可见网格的 Irrlich 碰撞

标签 c# collision-detection irrlicht

我正在使用 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();

最佳答案

我还没有使用过你正在使用的系统,但已经两天了,所以我想我会在黑暗中试一试。如果我没看错的话,听起来您正在使用预定义的系统和其中的网格。当玩家对象到达网格边缘时,它会脱离网格,对吗?

这听起来像是您正在使用的引擎具有某种引力,如果有的话,该网格位于底层之上。将网格想象成一座桥梁;如果你走下边缘,你就会掉下来。您可能想要做的是沿着网格边缘设置墙壁以防止玩家从桥上掉下来,或者如果引擎允许,则在网格上设置碰撞以防止玩家越过边缘。后者会是一个更好的主意,因为我假设您会希望敌人和 NPC 遵循这些相同的路径,而墙壁只是更多的碰撞检测(并且可能会阻碍诸如飞行敌人之类的东西)。

我知道这不是一个确切的答案,但我希望能从中得到一些想法。也许我离题太远了,但根据所提供的信息,我认为这是正在发生的事情。

关于c# - 与不可见网格的 Irrlich 碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16131815/

相关文章:

c# - 从 C# 调用具有函数参数的 F# 函数

java - 如何使用图像进行碰撞检测?

android - irrlicht android on opengl es 2.0 驱动程序

c++ - Irrlicht:如何将 ISceneNode 转换为 IMeshSceneNode?

c++ - Irrlicht:如何在场景管理器中启用所有节点的阴影?

C# .NET GetHashCode函数问题

c# - 在 C# 中重新排序 BindingList 中的项目?

c# - 如何在按钮单击时调用异步?

swift - 添加多个边框以检测屏幕内外的节点

algorithm - 轴对齐边界框与边界椭圆