Zastanawia mnie jedna rzecz, a mianowicie wprowadzenie skoku „pod impulsem” w platformówce. Jeśli nie wiesz, o czym mówię, pomyśl o skokach Mario, Kirby i Cytat z Cave Story. Co oni mają ze sobą wspólnego? Wysokość skoku zależy od tego, jak długo trzymasz wciśnięty przycisk skoku.
Wiedząc, że „impulsy” tych postaci są budowane nie przed ich skokiem, jak w rzeczywistej fizyce, ale raczej w powietrzu - to znaczy, możesz bardzo dobrze podnieść palec w połowie maksymalnej wysokości i zatrzyma się, nawet jeśli z desacceleration między nim a kropką; dlatego możesz po prostu stuknąć w skok i przytrzymać go w skoku w dal - jestem zahipnotyzowany tym, jak utrzymują swoje trajektorie jako łuki.
Moja obecna implementacja działa następująco:
Gdy przycisk skoku jest wciśnięty, grawitacja jest wyłączona, a współrzędna Y awatara jest zmniejszana o stałą wartość grawitacji. Na przykład, jeśli rzeczy spadną do Z jednostek na tik, wzrośnie Z jednostek na tik.
Gdy przycisk zostanie zwolniony lub limit zostanie osiągnięty, awatar spadnie w stopniu, który sprawi, że obejmie X jednostek, dopóki jego prędkość nie osiągnie 0; kiedy to zrobi, przyspiesza, aż jego prędkość dopasuje się do grawitacji - przyklejając się do przykładu, mogę powiedzieć, że przyspiesza od 0 do Z jednostek / tik, jednocześnie pokrywając jednostki X.
Ta implementacja powoduje jednak, że skoki są zbyt ukośne i chyba że prędkość awatara jest większa niż grawitacja, co w moim obecnym projekcie byłoby zbyt szybkie (porusza się z około 4 pikselami na tyknięcie i grawitacja wynosi 10 pikseli na tyknięcie, przy klatek na sekundę 40 klatek na sekundę), dzięki czemu jest bardziej pionowy niż poziomy. Osoby zaznajomione z platformowcami zauważyłyby, że łuk postaci przeskakuje prawie zawsze pozwala im skakać dalej, nawet jeśli nie są tak szybkie, jak grawitacja gry, a gdy nie, jeśli nie gra się właściwie, okazuje się, że jest bardzo sprzeczne z intuicją. Wiem o tym, ponieważ mogę potwierdzić, że moje wdrożenie jest bardzo denerwujące.
Czy ktoś próbował kiedyś podobnej mechaniki, a może nawet się udało? Chciałbym wiedzieć, co kryje się za tego rodzaju platformówką. Jeśli nigdy wcześniej nie miałeś z tym żadnego doświadczenia i chcesz spróbować, nie próbuj poprawiać ani ulepszać mojej wyjaśnionej implementacji, chyba że byłem na dobrej drodze - spróbuj wymyślić swoje rozwiązanie z zadraśnięcie. Nie obchodzi mnie, czy użyjesz grawitacji, fizyki czy co tam jeszcze, dopóki pokazuje to, jak działają te pseudo-impulsy, to działa.
Chciałbym również, aby w jego prezentacji unikano kodowania specyficznego dla języka; na przykład, dzieląc się z nami przykładem C ++ lub Delphi ... O ile używam frameworka XNA do mojego projektu i nie miałbym nic przeciwko C #, nie mam dużo cierpliwości, aby czytać kod innych, i jestem niektórzy twórcy gier w innych językach byliby zainteresowani tym, co tutaj osiągamy, więc nie przejmuj się trzymaniem się pseudo-kodu.
Z góry dziękuję.