Supponiamo che io stia usando questo personaggio.
(fonte: iconbug.com )
Come implementeresti il rilevamento delle collisioni? L'uso di un rettangolo di selezione non sembra essere una buona approssimazione, perché la forma dell'uccello non è in nessun posto vicino a un quadrato.
Stavo pensando di avere una sorta di struttura dati quad tree all'interno dell'oggetto che rappresenta porzioni dell'immagine. Ogni foglia può essere false
(nel caso in cui copra lo spazio bianco / trasparente all'esterno dell'uccello) o true
(nel caso in cui rappresenti un'area dell'uccello, ad esempio becco, occhio, ecc.). Quindi in qualche modo prova l'unico ostacolo sulla scena per la collisione con l'uccello.
Ma i miei problemi nel mio approccio sono:
- Non so come inizializzare l'albero dei quad.
- Una volta inizializzato l'albero dei quad, non sono sicuro di come attraversarlo e usarlo quando l'ostacolo si trova all'interno delle coordinate dell'immagine.
Come effettueresti il rilevamento delle collisioni con personaggi non quadrati?
LE: L'altro approccio che ho visto è stato l'uso di più box di delimitazione. Ad esempio, avrei una o poche scatole di delimitazione per il becco, poi alcune per i capelli o la coda. Ma può diventare noioso. Se questo è un approccio valido nel mio caso, come potrei generare quei rettangoli? Dubito che dovrei averli codificati nel mio programma.
LE2: Mi preoccupo di collisioni abbastanza precise. Non riesco a immaginare come un singolo rettangolo di selezione o un cerchio possano almeno approssimare decentemente quella forma, quindi questo approccio non funzionerà.