C'è una cosa che mi ha sconcertato, ed è come implementare un salto 'impulsivo' in un platform. Se non sai di cosa sto parlando, pensa ai salti di Mario, Kirby e Quote di Cave Story. Cosa hanno in comune? Bene, l'altezza del salto è determinata dalla durata della pressione del pulsante di salto.
Sapendo che gli "impulsi" di questi personaggi non sono costruiti prima del loro salto, come nella fisica reale, ma piuttosto mentre sono a mezz'aria , cioè puoi benissimo sollevare il dito a metà dell'altezza massima e si fermerà, anche se con desaccelerazione tra esso e il punto fermo; ed è per questo che puoi semplicemente toccare per un salto e tenerlo premuto per un salto in lungo -, sono affascinato da come mantengono i loro trajetories come archi.
La mia attuale implementazione funziona come segue:
Mentre si preme il pulsante di salto, la gravità viene disattivata e il coordinato Y dell'avatar viene diminuito dal valore costante della gravità. Ad esempio, se le cose cadono in unità Z per tick, aumenteranno le unità Z per tick.
Una volta rilasciato il pulsante o raggiunto il limite, l'avatar si disaccelera in una quantità tale da coprire X unità fino a quando la sua velocità non raggiunge 0; una volta che lo fa, accelera fino a quando la sua velocità corrisponde alla gravità - attenendosi all'esempio, potrei dire che accelera da 0 a Z unità / tick mentre copre ancora le unità X.
Questa implementazione, tuttavia, rende i salti troppo diagonali e, a meno che la velocità dell'avatar non sia più veloce della gravità, il che lo renderebbe troppo veloce nel mio progetto attuale (si sposta di circa 4 pixel per tick e la gravità è di 10 pixel per tick, a un framerate di 40FPS), lo rende anche più verticale che orizzontale. Coloro che hanno familiarità con i platform si accorgerebbero che il salto con l'arco del personaggio consente quasi sempre loro di saltare ulteriormente anche se non sono veloci quanto la gravità del gioco, e quando non lo fanno, se non giocati bene, si dimostrerebbero molto controintuitivo. Lo so perché potrei attestare che la mia implementazione è molto fastidiosa.
Qualcuno ha mai provato una meccanica simile e forse ci è riuscito? Mi piacerebbe sapere cosa c'è dietro questo tipo di Platform Platform. Se non hai mai avuto alcuna esperienza con questo in precedenza e vuoi provarlo, per favore, non provare a correggere o migliorare la mia implementazione spiegata, a meno che non fossi sulla strada giusta - prova a inventare la tua soluzione da graffiare. Non mi importa se usi la gravità, la fisica o quant'altro, finché mostra come funzionano questi pseudo-impulsi, fa il lavoro.
Inoltre, vorrei che la sua presentazione evitasse una codifica specifica della lingua; tipo, condividendoci un esempio C ++ o Delphi ... Per quanto sto usando il framework XNA per il mio progetto e non mi dispiacerebbe roba C #, non ho molta pazienza per leggere il codice degli altri, e sono alcuni sviluppatori di giochi di altre lingue sarebbero interessati a ciò che realizziamo qui, quindi non preoccuparti di attenersi allo pseudo-codice.
Grazie in anticipo