C ++ - Come dovrei progettare la mia lezione di animazione?

2

Sto lavorando al mio primo considerevole programma C ++; un remake di piattaforma 2-D mario.

Al momento ho una classe di animazione che racchiude tutte le funzionalità delle mie animazioni per tutti i cattivi chiamati Animazione. Quindi, volevo creare la classe di animazione per Mario, chiamiamola MarioAnimation. Mario ha un'abilità, può saltare ed è animato a una velocità diversa da quella dei miei cattivi ragazzi, quindi non ritenevo necessario coprire tutte le animazioni con la sola classe di animazione e mi sentivo bene con la mia decisione, perché gli oggetti avrebbero portato con sé funzioni non necessarie e loro. Così, ho creato un'altra classe di animazione, AbilityAnimation che aveva funzioni specifiche su come sarebbe stata animata una palla di fuoco. Ora, ho appena finito le basi per la mia classe ItemAnimation. Il prossimo passo è creare BlockAnimations per le animazioni di blocchi e piattaforme mobili. Sembra che metà di ogni classe sia simile ma non uguale e ognuna ha 1-3 funzioni completamente uniche. Mi fa sentire a mio agio sulla mia decisione di design.

Dovrei tornare indietro e provare a generalizzare la mia funzione di animazione, o è meglio mantenere le mie classi di animazione specifiche in modo da non trasportare bagagli extra su ciascun oggetto?

Grazie in anticipo per qualsiasi consiglio tu possa avere.

    
posta Brandon Chatham 08.10.2016 - 09:06
fonte

1 risposta

1

Dai suoni delle cose, la mia impressione è che si dovrebbe generalizzare la tua lezione di animazione (piena divulgazione, non faccio giochi, quindi prendilo con un pizzico di sale!). La tua linea di apertura è la chiave: 'Al momento ho una classe di animazione che incapsula tutte le funzionalità delle mie animazioni per tutti ...'

Questo suona come un errore subito, per me il tuo corso di animazione riguarda l'aggiornamento degli sprite per tutte le tue entità (entità come Mario, nemici, ecc.). Ogni entità ha bisogno di chiamare un aggiornamento dell'animazione ad un certo punto, se per esempio mario salta, chiama la sua versione di animation.update, che a sua volta controlla il suo stato (che ora sta saltando) e aggiorna il suo sprite all'immagine appropriata. Quando un nemico si muove, il suo stato cambia in "movimento" e chiama la sua versione di animation.update, che a sua volta aggiorna la sua animazione di conseguenza. Ha senso?

C'è sempre il rischio di sovra astrazione, ma penso che qui dovresti concentrarti su una maggiore separazione delle preoccupazioni.

    
risposta data 08.10.2016 - 12:35
fonte

Leggi altre domande sui tag