Здійснення руху персонажа по вигнутому схилу у Світі із силою тяжіння


10

Я бачив цю гру

Ошатні штани 2 . І те, що я помітив, крім фізики та прекрасних анімацій, - це те, що персонаж рухається по схилах, навіть вигнутих схилах. Я не маю досвіду роботи в Box2d, але ця концепція вигнутих укосів нова для мене. Було б мені дуже допомогти, якби хтось просвітив мене про цю концепцію та її реалізацію. Навіть якщо впровадження не в box2d, це вітається.


2
Metanet, хлопці, які зробили N (який знаходиться у Flash), мають навчальний посібник про те, як вони зіткнулися, який висвітлює, як вони обчислюють криві: metanetsoftware.com/technique/tutorialA.html
CodexArcanum

Відповіді:


5

Як отримати криві в Box2D?

У неопублікованій версії Box2D є два нові типи фігур , b2LoopShape і b2EdgeShape , які дозволяють будувати криві з послідовності сегментів рядків.

У випущеній версії ви можете використовувати декілька невеликих коробок, встановлених під кутом, щоб отримати подібний ефект, але тіла мають тенденцію робити нестабільні та несподівані речі поблизу точок з'єднання. Тому я рекомендую використовувати невипущену версію.

Як персонаж може впасти по кривій?

Зробіть персонажа колесом! У моєму питанні щодо фізики платформерів є певна дискусія з цього приводу , але основна ідея - встановити тіло свого персонажа на колесо, що обертається, і рухатись, застосовуючи обертальну силу на колесо. Навіть незважаючи на те, що колесо має тертя, сила тяжіння вниз від сили тяжіння призведе до його обертання вниз по схилах - як у справжнього колеса. Змінюючи параметри двигуна обертового шарніра , ви можете змусити його протистояти обертанню стільки, скільки необхідно, щоб уникнути його кочення вниз по малих нахилах.


Я згоден з вами, використовуючи b2LoopShape, я міг створити нахил, як моє бажання. Але, перейшовши за посиланням, яке ви опублікували; Проблема в тому, що це не призводить до того, що флеш-порт box2d є лише версією c ++. 1.) Чи є у вас якісь пропозиції щодо цього? або 2.) Чи знаєте ви будь-який інший двигун фізики для спалаху, який дозволяє створювати вигнуті нахили?
Вишну

Я не думаю, що Flash-порт Box2D є сучасним для нових типів стику / форми. Я поняття не маю, які фізичні двигуни доступні для Flash, крім Box2D.

@ Joe: Якщо я запитаю вас, чи було б це можливо, якби я спробував написати клас AS для b2LoopShape? Щоб я міг включити його до api Box2d Flash. З чого я повинен почати прямувати? Якась підказка?
Вишну

1

Fancy Pants був створений у Flash, а Flash має специфічний метод під назвою "hitTest", який дозволяє протестувати піксель (у цьому випадку він, ймовірно, робить 2-3 піксельних hitTests внизу символу Fancy Pants) проти того, що намальовано всередині призначеного об'єкта фільму. Це може бути трохи хитро, щоб почувати себе правильно, але ця вбудована функція є причиною того, що так багато Flash-ігор мають зіткнення зі зігнутими схилами. Процес набагато складніший для більшості інших двигунів, і зазвичай це доводиться робити вручну, але є кілька різних методів.

Метод, який мені найбільше знайомий, полягає в тому, що якщо ваш двигун заснований на плитці (подумайте Sonic The Hedgehog), плитки, позначені вигнутими, можуть мати формулу, яка визначає позицію зіткнення "Y" на основі поточного "X" положення персонажа на тій плитці. Вам слід було б визначити формулу, виходячи з того, наскільки крутий схил і наскільки кривий ви шукаєте. Ви можете використовувати графічний калькулятор або графічну програму для експерименту з формулами. Ви можете мати кілька плиток з різними кривими та формулами, пов’язаними з ними таким чином.


У Sonic немає кривої формули для плиток. Він використовує 2d-мапу висоти для кожного пікселя.
AttackingHobo

@AttackingHobo: Чи можете ви сказати мені, що таке 2dheight карта для кожного пікселя, або можете вказати мені на місце, де я можу це використати у своїх флеш-іграх?
Вішну

2
info.sonicretro.org/Sonic_Physics_Guide Погляньте на це. Я не знаю, чи це допоможе вам, якщо ви використовуєте поле 2d. Можливо, вам доведеться закатати власний двигун фізики.
AttackingHobo

@Attacking Hobo: Чи є якась перевага чи можливість у "виконанні" вигнутих схилів Якщо я спробую зробити клас AS 3.0, що дозволяє петлі в app box2d?
Вишну
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.