Столкновение Ирлихта с невидимой сеткой

Я пишу Final Fantasy-подобный игровой движок с 2D-фонами и 3D-моделями с Irrlicht. Для вычисления столкновений с объектами на заднем плане я использую невидимую сетку, подобную этой:

Я пытался с этим кодом, но когда игрок достигает края сетки, он падает:

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 ответ

Я не использовал систему, которую вы используете, но прошло два дня, так что я решил попробовать в темноте. Если я правильно читаю, это звучит так, как будто вы используете предопределенную систему и сетку внутри нее. Когда объект игрока подходит к краю сетки, он падает с сетки, правильно?

Звучит так, что движок, который вы используете, имеет своего рода гравитацию, и эта сетка находится выше нижнего уровня, если он есть. Думайте о сетке как о мосте; если ты идешь с края, ты падаешь. Возможно, вы захотите либо установить стены вдоль края сетки, чтобы игрок не упал с моста, либо, если позволяет двигатель, настроить столкновение на сетке, которое не позволит игрокам перебраться через край. Позднее было бы лучше, потому что я предполагаю, что вы захотите, чтобы враги и неигровые персонажи следовали по тем же путям, а стены просто больше обнаруживали столкновения (и могли бы мешать таким вещам, как летающие враги).

Я знаю, что это не точный ответ, но я надеюсь, что это даст несколько идей. Может быть, я далеко, но я думаю, что это происходит из предоставленной информации.

Другие вопросы по тегам