Zum Thema "Taste gedrückt halten" habe ich die Erfahrung gemacht, dass je nach PC, der zum Testen genutzt wird, es vorkommen kann, dass kurzzeitig ein Loslassen der Taste registriert werden kann, obwohl sie durchgehend festgehalten wird. Ich denke mal, dass das an der Tastatur leigen kann. Das Problem lässt sich aber umgehen (bei mir jetzt völlig fehlerfrei bisher), in dem sehr kurzes Loslassen der Taste trotzdem als durchgehendes Festhalten gewertet wird. Dazu zählt man in einer Variabe einfach 0,0wait-Durchläufe mit und verschachtelt die Abfragen entsprechend, sodass erst ab einer gewissen Durchlaufanzahl die Taste als Losgelassen gilt.
Also funktionieren tut es - auch ohne Patches, wenn man längere Zeit an den Problemen werkelt. Und Shadowsoul, bau das dochmal ein, damit deine Spiele wieder laufen. ^^
@Owly
Das Dokument finde ich sehr interessant, insbesondere die Analyse zu den Sprungverhalten bekannter Jump'n'Runs. Eine Anmerkung zu den vorgeschlagenen kürzeren Sprüngen: Bei kurzem Drücken der Sprungtaste lediglich den Gravitationsfaktor zu erhöhen, würde dazu führen, dass in der Aufwärtsbewegung ein schnelleres Abbremsen, also eine Verkleinerung der Sprungparabel, entstehen würde, statt ein Darstellen des oberen Stücks der Parabel. Während das nur Detailsache ist, ist der Verlauf in der Abwärtsbewegung etwas dramatischer: Liegt das Sprungziel tiefer als der Absprungort, würde man enorm schnell die maximale Fallgeschwindigkeit erreichen, falls eine solche existiert.
Falls man nicht an der Parabelspitze, also dem Hochpunkt, den Gravitationsfaktor ändern will (was einen Workaround darstellt), würde ich Folgendes vorschlagen:
Entweder (a), wenn erst nach Loslassen gesprungen werden soll, dass die Druckdauer auf die Taste die Sprungstärke speichert, also die vertikale Beschleunigung, und das diese im Verlauf des Sprungs abnimmt.
Oder (b), wenn mit Beginn des Drückens gesprungen werden soll (wie z.B. Mario es tut), dass ein Festhalten der Sprungtaste die - auch hier verwendete - Sprungstärke vor dem Verringern schützt, also bei Festhalten der Sprungtaste die Gravitation solange geringer ist. Dieses teilweise Aufheben der Gravitation ist auch genau der psychologische Aspekt den man spürt: Man kann die spielbare Figur noch etwas nach oben "drücken".
In Bezug auf Trägheit bin ich übrigens schon länger am Überlegen, wie das möglichst fundamental und ohne kompliziertere Formel lösbar ist. Bei deinem Ansatz erzeugt die simulierte Reibung keine Geschwindigkeitsgrenze. So habe ich den Ansatz "(momentaneGeschwindigkeit + konstanteBeschleunigung) * ReibungsFaktor" gewählt, mit Reibungsfaktor knapp unter eins. Aber ich muss immer wieder daran denken, dass ich irgendwo gehört habe, dass erst bei achtfacher Kraft die Maximalgeschwindigkeit verdoppelt ist, also die Reibung bzw. der Luftwiderstand kubisch wirkt. Kubisch ist nicht sehr elementar ... also falls jemand dazu mehr weiß (Physiker anwesend?).