Quando i metodi possono essere applicati a più di un oggetto

0

Stavo leggendo questa presentazione di diapositive su Elder Scrolls 6 . L'autore scrive:

Add some different directions to swing your weapons, more tactical options, feinting, parrying, literally anything

Definiamo alcune parole qui:

finta : un movimento rapido che fai per ingannare un avversario

Parrying : difendersi girando o spingendo da parte (un pugno, un'arma, ecc.)

In un gioco le azioni di cui sopra possono essere prese dal giocatore o da un avversario.

  1. Dato che queste azioni possono essere eseguite senza un'arma, sono azioni che un personaggio (giocatore, nemico o npc) può fare, ha senso avere i metodi feint() e parry() nella classe Character ?

L'oscillazione può essere fatta in due modi, posso far oscillare la spada o posso oscillare e colpire. Supponiamo che il gioco consenta il combattimento corpo a corpo e armi come le spade,

  1. Avrebbe senso avere swing() nella classe di caratteri?

In questo modo il metodo può verificare se un'arma è equipaggiata con (isEquipped) e se l'arma può essere ruotata (una caratteristica di spade e asce) o posso swing() con la mia mano vuota indipendentemente da quale arma l'altra mia mano sia detenzione.

    
posta 25.06.2018 - 19:35
fonte

2 risposte

0

L'unico posto per queste funzioni si trova nella classe Character . Le armi in realtà non eseguono queste azioni. Sono strumenti utilizzati mentre il personaggio li esegue.

Dal punto di vista della codifica, queste funzioni devono apparire nella classe Character perché potresti voler modificare il modo in cui reagisce l'arma (cioè il personaggio è avvelenato o ferito e questo influenza la possibilità di una parata di successo).

La classe Weapon fornisce un buon metodo per ottenere alcune informazioni di base sull'arma che il personaggio ha in mano e le sue capacità, ma di per sé è solo una piccola parte dell'immagine più grande.

In generale è una buona idea partire da un punto di costruzione di classi su come funziona il mondo reale (ovviamente potrebbe essere necessario divergere da esso, ma è un buon punto di partenza). Nel mondo reale le persone parano / attaccano / oscillano. Le armi non possono fare nulla di tutto ciò.

    
risposta data 25.06.2018 - 21:59
fonte
0

Non mi aspetto che il gioco sia modellato in entrambi i modi. Un personaggio può essere di classe, ma il personaggio in quanto tale probabilmente non ha metodi come SwingWeapon, e nemmeno l'arma stessa, perché il personaggio e l'arma non sono oggetti nel senso in cui ci si può aspettare quando li vedi nel gioco. / p>

Non avrebbero alcun tipo di comportamento, sono solo modelli 3D. Il gioco crea l'illusione di un piccolo uomo o donna che percepiresti come un'entità. È il punto del gioco farti credere, renderlo un "oggetto" credibile. Se sei un programmatore, potresti vedere un oggetto e pensare che ci deve essere una classe che incapsula tutto ciò che sembra un comportamento.

Ma mi aspetto che i modelli grafici contengano solo la geometria. Quindi avresti un oggetto giocatore indipendente da qualsiasi personaggio. Un copione risponde al comando del giocatore. Se il comando è "Attacco", una sequenza viene riprodotta in modo specifico per una serie di modelli attivi in quel momento (selezionati dal giocatore all'inizio del gioco), come il personaggio A più l'arma B. Verranno animati in sincronia senza che nessuno sappia dell'altro, da un oggetto animatore che non sa o non si preoccupa se sta animando un attacco, una sequenza morta o un movimento in esecuzione. Le animazioni sarebbero sequenze pre-registrate di posizioni di punti (probabilmente il risultato di esercizi di motion capture). A seconda del personaggio e dell'arma in cui si trova il personaggio, verrà riprodotta un'animazione diversa di punti di riferimento. Un'animazione sarebbe solo dati. Le animazioni da riprodurre sono determinate da una tabella di modelli attualmente visibili collegati a un particolare comando.

Quando un giocatore abbandona un'arma viene semplicemente contrassegnato per non far più parte delle animazioni da eseguire insieme.

Non sono uno sviluppatore di giochi 3D, questo è ciò che considero guardando i giochi e ciò che so della programmazione 3D in generale.

    
risposta data 26.06.2018 - 07:02
fonte

Leggi altre domande sui tag