Я роблю 2D гру. Наразі навколо нього літає вертоліт, який контролюється гравцем. Це керується за допомогою клавіш зі стрілками: Вгору, Вліво та Вправо.
Це швидкість по осі y dy
, а швидкість по осі x - dx
.
Це фізика така:
Щоразу, коли UP не натискається , dy
прискорюється з постійним прискоренням, нескінченно, вниз. (Гравітація). dx
залишається в його поточному значенні.
Якщо натиснути кнопку UP , dy
прискорюється з постійним прискоренням від того, що є зараз, до 4 (вгору, до досягнення швидкості 4). dx
залишається в його поточному значенні.
Якщо натиснути ліворуч , dx
прискорюється з постійним прискоренням, від того, що зараз є, до -4 .
Якщо натиснути ВПРАВО , dx прискорюється з постійним прискоренням, від того, що зараз є, до 4 .
(Коли натискають ліворуч або праворуч, а вгору не натискають одночасно, як я вже сказав: dy
все більше стає меншим та меншим, бо гравітація впливає на вертоліт)
Все це змушує вертоліт часто слідувати дугами у повітрі, а не прямими лініями.
Це створює фізику, яка здається цілком реальною.
Моє запитання:
Противник вертоліт, ШІ, повинен рухатися за тією ж системою фізики.
Скажімо, ШІ хоче потрапити з місця, де він зараз знаходиться, до пункту B.
Якби не було гравітації і поступового прискорення в грі, було б легко. Я просто намалював би вектор з позиції ШІ до точки В і змусив ІІ слідувати за ним.
Але оскільки є гравітація та поступове прискорення, ШІ ніколи не може рухатися по прямій (майже). що було б найкращим способом змусити ШІ якомога ефективніше перейти до точки В?
Як я можу взяти до уваги тяжкість при переміщенні ШІ до певного пункту призначення?
(Якщо це легше пояснити, будь ласка, вважайте, що точка B знаходиться на тому ж рівні на осі y, що і AI, а не по діагоналі до неї.)
Дякую