Є одне, що мене спантеличує, і це те, як здійснити «штучний імпульс» стрибок у платформері. Якщо ви не знаєте, про що я говорю, то подумайте про стрибки Маріо, Кірбі та Цитата з Cave Story. Що у них спільного? Ну, висота вашого стрибка визначається тим, як довго ви тримаєте натиснуту кнопку стрибка.
Знаючи, що «імпульси» цих персонажів побудовані не до їхнього стрибка, як у фактичній фізиці, а, скоріше , у повітрі - тобто ви можете дуже добре підняти палець на середину максимальної висоти, і він зупиниться, навіть якщо з зменшення прискорення між нею і повною зупинкою; саме тому ви можете просто натиснути на стрибок і утримати його у стрибку в довжину - я вражений тим, як вони зберігають свої траєкторії як дуги.
Моя поточна реалізація працює наступним чином:
Під час натискання кнопки стрибка гравітація вимикається, а Y-коорденат аватара зменшується на постійне значення сили тяжіння. Наприклад, якщо речі падають на Z одиниць на галочку, вона зросте Z одиниць на галочку.
Після того, як кнопка відпущена або досягнуто обмеження, аватар скорочується в такій кількості, яка змусить охопити X одиниці, поки швидкість не досягне 0; як тільки це зробить, він прискорюється до тих пір, поки його швидкість не зрівняється із силою тяжіння - дотримуючись прикладу, я можу сказати, що він прискорюється від 0 до Z одиниць / галочки, все ще охоплюючи X одиниць.
Однак ця реалізація робить стрибки занадто діагональними, і, якщо швидкість аватара не буде швидшою, ніж сила тяжіння, що могло б зробити його занадто швидким у моєму поточному проекті (він рухається приблизно в 4 пікселі на галочку, а гравітація - 10 пікселів на галочку, при кадр 40FPS), він також робить його більш вертикальним, ніж горизонтальним. Ті, хто знайомий з платформерами, помітять, що стрибок дуги персонажа майже завжди дозволяє стрибати далі, навіть якщо вони не такі швидкі, як гравітація гри, і коли це не так, якщо не грати правильно, виявиться себе таким дуже контр-інтуїтивно зрозумілий. Я це знаю, бо міг засвідчити, що моя реалізація дуже дратує.
Хтось коли-небудь спробував подібну механіку, а може, і досяг успіху? Мені хотілося б знати, що стоїть за подібними стрибками платформерів. Якщо ви ніколи раніше не мали жодного досвіду роботи з цим, і хочете дати йому відгук, то, будь ласка, не намагайтеся виправляти чи покращувати мою пояснену реалізацію, якщо я не був правильним шляхом - спробуйте скласти своє рішення з подряпина. Мені байдуже, чи використовуєте ви гравітацію, фізику чи щось подібне, доки це показує, як працюють ці псевдоімпульси, це робить свою роботу.
Також я хотів би, щоб його презентація уникала кодування, що залежить від мови; як, поділіться нами прикладом C ++ або Delphi ... Стільки, як я використовую рамку XNA для свого проекту і не заперечую проти матеріалів C #, у мене не вистачає терпіння читати код інших, і я певні розробники ігор інших мов будуть зацікавлені у тому, чого ми тут досягаємо, тому не заважайте дотримуватися псевдо-коду.
Заздалегідь дякую