Animazione e movimento dell'arrampicata sui bordi (platform 2D)


11

Lottando per prendere una decisione sull'implementazione di un meccanico di scalata del bordo per un platform 2D guidato dalla fisica. Qual è il modo migliore per farlo senza che diventi eccessivamente complesso?

Finora ho capito (hobbista qui non un professionista) ci sono alcune opzioni tra cui:

  1. Applica una forza controllata al corpo rigido sull'asse y fino a quando la posizione della radice è appena sopra la posizione della mano, quindi applica una forza sufficiente sull'asse x in modo che il personaggio si trovi sulla piattaforma. Allo stesso tempo, in qualche modo sincronizzalo con l'animazione della salita.

    Osservazioni : qui il movimento è facile e può anche essere controllato da un'articolazione scorrevole prismatica, ma non sono sicuro di come mantenere le animazioni (colonna vertebrale) in sincronia con il movimento.

  2. Animazione di movimenti di root che guida la posizione principale del personaggio. Teletrasporta il corpo rigido una volta completato e spera che box2d possa ancora rispondere correttamente in tempo a qualsiasi collisione se qualche oggetto dovesse cadere dal cielo.

    Osservazioni : sembra più facile da animare in realtà, ma non sono sicuro se incontrerò problemi con il runtime della colonna vertebrale, box2d o versioni successive lungo la piattaforma mobile e piattaforme di varia altezza.

  3. Applicare il vincolo IK a livello di codice sulle mani per bloccarle in posizione e procedere alla rotazione manuale delle ossa o applicare piccole animazioni predefinite (pochi tasti / fotogrammi) applicando contemporaneamente la forza necessaria al corpo rigido.

    Osservazioni : sembra che questo darebbe il massimo controllo al giocatore ma mi sembra molto complicato implementarlo al mio livello, non proprio sicuro da dove iniziare.

Grazie in anticipo per qualsiasi input!

Cordiali saluti: Questo è un motore basato su ECS (libgdx + ashley) con box2d. L'afferrare sporgenza è già implementato come un sistema separato, quindi possiamo supporre che il personaggio sia già in grado di pendere da una sporgenza di qualsiasi altezza.

Risposte:


1

credo che tu abbia bisogno di più scelte di design qui prima di poter prendere una giusta decisione, in particolare, cosa può accadere al personaggio mentre è appeso / arrampicato?

dal momento che hai detto che il gioco è basato sulla fisica, immagino che potresti avere una roccia che ti cade in testa mentre appendi o ti arrampichi, quindi se questo è il caso credo che andare al rootmotion potrebbe essere la soluzione più semplice, devi solo animare l'arrampicata , mentre si arrampica è in uno stato di sospensione leggermente diverso, l'unica differenza è che non è possibile avviare l'azione di arrampicata.

Ora questo presuppone che tu abbia l'intera situazione di impiccagione sotto controllo, il che significa che se mentre stai impiccando e si verifica qualsiasi interazione, il personaggio reagisce correttamente.

Quindi tutto ciò che devi fare è riportare lo stato del tuo personaggio al minimo una volta completata l'animazione dell'arrampicata.


0

potresti semplicemente spostare la trasformazione.y su n numero di volte fino a quando i piedi sono sul bordo e dimenticano temporaneamente la fisica, penso che funzionerà bene, puoi sempre misurare la distanza tra gli oggetti che cadono e il giocatore nel caso in cui la collisione fallisca durante una traduzione trasformata. per assicurarsi che si verifichi una collisione ..


0

Se il giocatore viene premuto contro un oggetto scalabile, consenti a su / giù di spostarlo sull'asse Y. Durante questo stato assicurarsi che non possa spostarsi sull'asse X. Mentre ti sposti, puoi chiamare Animation.Esempio sulla tua animazione in salita per assicurarti che il punto nell'animazione corrisponda alla distanza percorsa piuttosto che cercare di cronometrare tutto.


0

Secondo me, il modo "migliore" sarebbe: quando si rileva l'arrampicata è possibile, bloccare temporaneamente la posizione del giocatore. Usa l'animazione con il movimento di root e blocca i controlli. Al termine dell'animazione, sblocca la posizione e i controlli dei giocatori.

Ovviamente se lo fai incautamente, sembrerà strano O richiederà una precisione perfetta dei pixel. Ma puoi evitarlo: dai al giocatore un certo raggio in cui può arrampicarsi e, con un leggero movimento, regola rapidamente la posizione nel punto perfetto.


0

Il giocatore può muoversi liberamente in orizzontale mentre è a mezz'aria (controllo aereo)? In tal caso, applicherei semplicemente una quantità adeguata di forza verticale per mettere i piedi del giocatore sopra la piattaforma e lasciare che il giocatore si muova orizzontalmente su di essa.

Ciò darebbe al giocatore un maggiore controllo sul personaggio e aprirebbe più opzioni di movimento - Ad esempio, se il giocatore (mentre pendeva da una sporgenza) voleva saltare, sparare a qualcosa sulla piattaforma, quindi ricadere e afferrare nuovamente il sporgenza mentre il proiettile viaggiava verso il suo obiettivo in modo da schivare eventuali proiettili che il bersaglio sparava contro il giocatore. Una tale tattica potrebbe costituire un'interessante strategia di lotta contro i boss.

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.