Продовжуємо серію уроків - основи створення ігор в game maker. У цій статті розглянемо як зробити найпростішу механіку пострілу - як зробити постріл.
Поступово переходжу на Game Maker Studio 2, тому будемо робити там, хоча різниця мінімальна.
Щоб урок не був занадто простим, спробуємо дуже різні варіанти пострілів, від пострілу після натискання, до черг і постріли з ділянкою ураження.
Як все це зроблено наприклад в грі crimsonland, якби її робили в GMS2?
По суті нам потрібна кімната і 3 об'єкти - герой, куля і ворог. Ну і спрайт до них.
При натисканні на ліву кнопку мишки (глобально).
Взагалі, нам достатньо ось цього:
instance_create_depth (x, y, 0, obj_bullet) Решта це вже блок (щоб не створювалося багато куль відразу), а нижні 2 alarm, це просто я робив чергу. Теж поки не потрібно.
Код руху до курсора мишки при створенні кулі:
move_towards_point (mouse_x, mouse_y, 50) -50 + random (100) це розкид при стрільбі, якщо він вам потрібен, можете зробити ось так.
50 - це швидкість польоту кулі. Досить швидко, зазвичай я роблю близько 15-30, в залежності від типу зброї та ігри (тут ще залежить від FPS).
Як зробити щоб ворог помирав при торканні кулі? Якщо зовсім просто:
Тут вмирає і ворог, і куля. Кулю теж не забуваємо вбивати, інакше вона буде пролітати через ворогів і мочити всіх (що теж іноді треба, але тоді шкоди зважить багато разів, враховуйте це, якщо є система ХП і шкоди).
instance_destroy (self)
instance_destroy (other) Так ось і все насправді! Ось так і робиться стрілянина.
- Герой створює кулю при натисканні на мишку (або куди хочете)
- Куля летить туди, де знаходиться мишка (або куди хочете)
- Куля вбиває ворога, або завдає йому шкоди.
Як зробити шкоди і систему ХП? Трохи інша тема, але якщо робити просто:
У створенні ворога: hp = 100
Можна наприклад ще: armor = 5
При колізії (зіткнення) кулі і ворога:
Один із способів. При цьому нам треба в пулі, при створенні, прописати її шкоди (damage). Можна це зробити глобальної змінної (global.damage) і задавати шкоди в залежності від навичок, дистанції польоту, зброї і чого завгодно.
Дивіться исходник Lonely Dude. там навіть шкоди в залежності від дистанції змінюється.
Зробимо шкоди наприклад 10, а броня 5, то буде наноситися шкоди 5.
Як вбивати? Там-же, при колізії кулі і ворога пишемо:
instance_destroy (self) // кулю теж не забуваємо вбивати other.hp- = self.damage-other.armor
if other.hp<=0 then instance_destroy(other)
Ось, хоча це і трохи інша тема.
Як зробити щоб куля тупо летіла наприклад наверх?
При створенні кулі пишемо vspeed- = 10 (Або інше число / змінну)