Come posso definire un'area di collisione complessa sopra una mappa a tessere?


13

Come molti hanno consigliato, sto usando l' editor di mappe affiancate per creare una mappa per il mio gioco ed è fantastico soprattutto perché il framework libgdx fornisce anche API per le mappe da affiancate.

Capisco di poter definire riquadri collezionabili o meno nell'editor delle mappe in modo da poter gestire eventuali collisioni nel mio codice. Ma attualmente mi trovo in una situazione in cui ho bisogno di dividere una tessera in aree collezionabili e non negoziabili. Manualmente, penso di poter definire punti e linee di confine delle due aree e gestirle programmaticamente. Ma è un lavoro che richiede molto tempo.

Quindi ho cercato su Google molto e ho trovato questo editore di fisica. Questo sembra un ottimo strumento per automatizzare il processo di cui sopra. Il sistema, tuttavia, funziona con ciascuna immagine decompressa e non sono sicuro che funzionerebbe anche se decomprimessi l'immagine per il suo funzionamento.

Mi chiedo se esiste un modo migliore per eseguire l'intero processo di definizione dell'area di collisione. Qualsiasi suggerimento sarà molto apprezzato.

Risposte:


22

Come al solito, lancerò alcune idee sul tavolo. Esistono sicuramente diversi modi per affrontare questo problema. Descriverò i tre che sono riuscito a ricordare e spetta a voi decidere quale (se presente) di questi approcci è buono per il vostro progetto.

Idea 1: motivi ripetibili nelle tessere

Il tuo sistema deve essere abbastanza flessibile da supportare qualsiasi area di collisione concepibile, o puoi eventualmente scomporlo in un insieme finito di forme di piastrelle con cui puoi costruire e trattarle come casi speciali? Ecco un paio di risorse per leggere su questa idea:

Idea 2: ignora la piastrella

Sì, ignora completamente la piastrella e memorizza una diversa rappresentazione poligonale dell'area di collisione. Quindi sovrapponi questa geometria sopra la tua mappa basata su piastrelle e gestisci le collisioni con essa. Se non hai bisogno di fisica, controlla la seguente risorsa:

Altrimenti, penso che potresti probabilmente usare lo strumento a cui ti sei collegato.

Idea 3: Pixel perfetto rilevamento delle collisioni

Usa le collisioni pixel perfette e usa una maschera separata o solo il canale alfa nelle tessere per codificare le aree di collisione variabili. Per ispirazione, consulta la seguente guida:

  • Physics in Sonic - Solid Tiles

    Dove la collisione viene eseguita direttamente contro i pixel delle tessere come questa:

    inserisci qui la descrizione dell'immagine

    E una risposta correlata che potrebbe anche essere rilevante qui .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.