2013-04-21 14 views
7

Sto scrivendo un motore di gioco simile a Final Fantasy, con sfondi 2D e modelli 3D con Irrlicht. Per calcolare le collisioni con gli oggetti sullo sfondo che uso una maglia invisibile come questo:Irrlicht collisione con una maglia invisibile

enter image description here

ho provato con questo codice, ma quando il giocatore raggiunge il bordo della maglia che cade:

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

risposta

1

Non ho usato il sistema che si sta utilizzando ma sono passati due giorni, quindi ho pensato di dare uno scatto al buio. Se sto leggendo questo correttamente sembra che tu stia usando un sistema predefinito e una mesh al suo interno. Quando l'oggetto giocatore va sul bordo della maglia, cade dalla rete, corretto?

Quello che sembra che stia succedendo è che il motore che si sta usando ha gravità di un tipo, e quella mesh è sopra il livello inferiore se ce n'è uno. Pensa alla rete come a un ponte; se esci dal limite, cadi. Quello che si potrebbe desiderare di fare è installare le pareti lungo il bordo della mesh per evitare che il giocatore cada dal ponte o, se il motore lo consente, impostare una collisione sulla rete che impedisca ai giocatori di andare oltre il bordo. La successiva sarebbe un'idea migliore perché presumo che vorrete che i nemici e gli NPC seguano questi stessi percorsi e che i muri siano solo più rivelatori di collisioni (e potrebbero ostacolare cose come i nemici volanti).

So che questa non è una risposta esatta, ma spero che questo abbia qualche idea là fuori. Forse sono lontano ma questo è quello che penso stia succedendo dalle informazioni fornite.