2013-04-21 11 views
7

Ich schreibe eine Final Fantasy-Like-Spiel-Engine, mit 2D-Hintergründe und 3D-Modelle mit Irrlicht. Um Kollisionen mit den Objekten im Hintergrund berechne ich eine unsichtbare Netzbespannung wie folgt verwenden:Irrlicht Kollision mit einem unsichtbaren Mesh

enter image description here

Ich habe mit diesem Code versucht, aber wenn der Spieler den Rand des Netzes erreicht er hinfällt:

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

Antwort

1

Ich habe das System, das Sie verwenden, nicht benutzt, aber es ist zwei Tage her, also habe ich mir gedacht, ich würde eine Aufnahme im Dunkeln machen. Wenn ich das richtig lese, klingt das so, als ob Sie ein vordefiniertes System und ein Mesh darin verwenden würden. Wenn das Spielerobjekt an den Rand des Gitters kommt, fällt es vom Gitter, richtig?

Es hört sich so an, als würde die Engine, die Sie verwenden, eine Art Gravitation haben, und diese Mesh liegt über der unteren Ebene, wenn es eine gibt. Stellen Sie sich das Netz wie eine Brücke vor; Wenn du vom Rand gehst, fällst du ab. Sie können entweder Wände am Rand des Gitters aufstellen, um zu verhindern, dass der Spieler von der Brücke fällt, oder, falls der Motor dies erlaubt, eine Kollision auf dem Gitter einrichten, die verhindert, dass Spieler über die Kante gehen. Letzteres wäre eine bessere Idee, weil ich annehme, dass Feinde und NSCs genau diesen Pfaden folgen sollen und Wände nur mehr Kollisionserkennung sind (und Dinge wie fliegende Feinde behindern könnten).

Ich weiß, das ist keine genaue Antwort, aber ich hoffe, dass dies ein paar Ideen da draußen bekommt. Vielleicht bin ich weit weg, aber das ist, was ich denke, geht aus den bereitgestellten Informationen.