Физически двигател отвътре
Това е втората част на статия за 2D двигателите по физика. Днес ще разгледаме видовете физически тела. Нека поговорим за това как да намерите по-добре баланс между реализма на вашите игри и невъзможността да играете в тях. Нека обърнем внимание и на традиционните ограничения на повечето готови решения и защо не трябва да добавяте вдлъбнати тела към играта си. И накрая ще отбележим основните свойства на обектите от физическия свят.
Основните функции на двигателите и най-популярните готови решения разгледахме в първата част на статията, която можете да намерите тук.
Моля, обърнете внимание, че продължение на тази статия вече е налице: „Физически двигател. Част 3 "
От спрайт към физическо тяло
Спрайтът е изображение, изобразено във вашата игра. Първоначално самият спрайт няма методи за взаимодействие с физическо тяло - да, той самият не е физически обект. Да, можете сами да симулирате някои сблъсъци, като знаете границите и позицията на спрайта спрямо екрана. Но в този случай трябва сами да напишете цялата логика на сблъсъка на играта, което изобщо не е маловажен въпрос. Не е ли по-добре самата игра да се справи с всичко това вместо вас?
В този откъс ние просто създаваме спрайт:
и извикайте метода на сблъсък между двата спрайта:
Граници на физическите тела
Физическият обект всъщност е проста форма, която ще определи приблизителния размер и формата на вашия спрайт (или активна част). Помислете за следната снимка:
Физическото тяло по подразбиране не е дефинирано за спрайт въз основа на неговата форма и размер. Трябва също да обърнете внимание на факта, че самото тяло е невидимо (разбира се, докато не активирате режима за отстраняване на грешки, ако е осигурен от двигателя). Границите на тялото се задават динамично от потребителя. Често те са прости форми, които могат да бъдат нарисувани програмно с помощта на самия двигател. Но ако вашият спрайт има сложна форма и се нуждаете от максимална точност, тогава можете да използвате програми на трети страни, за да начертаете границите на спрайта. След като създадете физическо тяло, просто трябва да го прикрепите към спрайта и да го дадете на физическия двигател, за да бъде разкъсан.
Спрайтът може да бъде и композитен. Например, герой с меч. Би било логично да се създадат две физически тела: за самия герой и за оръжията му, с които той възстановява справедливостта. По този начин можете да прикачите два физически обекта към един спрайт. И можете да обработвате сблъсъци, например по следния начин:
Калибриране на границите на физическото тяло
Може да искате да направите физическото тяло на играча малко по-малко, отколкото е в действителност. Има поне две причини за това:
Подобряване на визуалния сблъсък
Ако създадете по-малко физическо тяло за играча, тогава когато той се сблъска с някакъв игрален обект, спрайтът на героя ще припокрие спрайта на сблъскващия се обект. И ще изглежда страхотно. И освен това отбелязвам, че трябва правилно да конфигурирате z-параметъра за всички спрайтове (z-параметърът е редът, в който обектът се вмъква в сцената; колкото по-голям е той, толкова по-висок ще бъде обектът в играта ).
Честност към играча
Трябва да помните, че създавайки физически тела за игрови обекти, не трябва да бъдете несправедливи. Ограничете телата, както е показано на спрайта. Погледнете изображението по-горе. Крилата на ракетите не влизат в границата на сблъсканата част на обекта. Ако играчът успее да стигне там, тогава сблъсъкът като такъв няма да настъпи, съответно врагът няма да бъде повреден. Може да смятате този факт за незначителен, но грешите.