Sto sviluppando un semplice gioco 2D basato su tile. Ho un livello, popolato da oggetti che possono interagire con le tessere e tra loro. Controllare la collisione con la tilemap è piuttosto semplice e può essere fatto per tutti gli oggetti con una complessità lineare. Ma ora devo rilevare la collisione tra gli oggetti e ora devo controllare ogni oggetto contro ogni altro oggetto, il che risulta in una complessità quadrata.Evita la complessità O (n^2) per il rilevamento delle collisioni
Vorrei evitare la complessità quadrata. Esistono metodi noti per ridurre le chiamate di rilevamento delle collisioni tra gli oggetti. Ci sono strutture dati (come ad esempio albero BSP), che sono facilmente mantenute e permettono di rifiutare molte collisioni alla volta.
Ad esempio, il numero totale di oggetti nel livello è di circa 500, circa 50 di loro sono visti sullo schermo alla volta ...
Grazie!
vuoi il rilevamento delle collisioni per tutti o solo per gli oggetti visibili? –
hm. non sono ancora sicuro. Penso di poter ignorare le collisioni con gli oggetti all'esterno dello schermo – SadSido
in tal caso è possibile raccogliere solo gli oggetti visibili e fare un rilevamento di collisione su di essi. Ancora O (n^2) complessità temporale. –