At The Mountains of Madness (itch)
Переключайтесь между тремя разными персонажами, чтобы работать вместе и выбраться из жутких антарктических руин на этой короткой платформе, вдохновленной главной историей H.P. Лавкрафт. Доберитесь до верха карты и сбейте ледяную глыбу, чтобы изолировать шогготов в туннелях внизу.
Все ресурсы и код были созданы мной за одну неделю.
Управление
- A/D или влево/вправо для перемещения
- J, вверх или пробел для прыжка
- K или Shift для входа в режим прицеливания с помощью начального персонажа >
- L или Enter, чтобы взаимодействовать с женским персонажем.
- I, чтобы переключать персонажей.
- ЛКМ, чтобы стрелять, прицеливаясь, или ломать лед большим персонажем. ул>
ВНИМАНИЕ: двери не на 100% идеальны, поэтому убедитесь, что персонажи не стоят под ними, когда вы их активируете, иначе вам придется выйти и начать заново!
Код платформера для этой игры во многом заимствован из моей предыдущей игры Shell Platformer с только небольшими улучшениями. В этой игре представлено несколько новых и полезных механик, в первую очередь смена персонажей, режимы прицеливания и механика подвешивания.
Смена персонажей была, безусловно, самой простой в реализации механикой, и она выполнялась с помощью следующего кода. Индекс управляемого символа просто меняется при нажатии I, и, если ледяной блок не был отпущен, камера настраивается на отслеживание контролируемого символа.
Соответствующий код контроллера символов:
// циклически управляемый символ если (keyboard_check_pressed(ord("I"))) { продолжениепрокатка += 1; если (управление > pc_count) { контроль = 1; } } // камера следует за управляемым персонажем если (!obj_breakable_slab.hanging) { camera_set_view_target (view_camera [0], obj_breakable_slab); таймер += delta_time/1000000; если (таймер >= 3) { room_goto_next(); } } иначе, если (управление == 1) { camera_set_view_target(view_camera[0], obj_pl1); } иначе, если (управление == 2) { camera_set_view_target (view_camera [0], obj_pl2); } иначе, если (управление == 3) { camera_set_view_target (view_camera [0], obj_pl3); }Две другие механики были гораздо сложнее. Механика прицеливания требовала использования отдельного объекта-руки, который на самом деле всегда незаметно вращается на заднем плане, но не может стрелять, пока игрок не прицеливается. Прицеливание определенно придется подправить в следующих выпусках этой игры, поскольку оно медленное и неуклюжее, но это было лучшее, что я мог сделать в условиях нехватки времени.
Соответствующий код игрока 1:
если (hsp == 0) { if (key_interact && Place_meeting(x, y + 1, obj_collisionBox)) { индекс_изображения = 4; прицеливание = !прицеливание; } иначе, если (!прицеливаюсь) { индекс_изображения = 0; } }Большая часть кода содержится в объекте руки: игрок просто начинает прицеливаться, если его остановить и нажать правильную клавишу. Как только игрок прицеливается, рука становится видимой и включается функция огня..
Соответствующий код активации:
image_xscale = obj_pl1.image_xscale; если (image_xscale == 1) { х = obj_pl1.x + 4; } иначе, если (image_xscale == -1) { х = obj_pl1.x - 4; } у = obj_pl1.y - 11; // задает вращение прицельного рычага if (keyboard_check_pressed(ord("D")) || Keyboard_check_pressed(vk_right)) { изображение_угол = 90; } иначе если (keyboard_check_pressed(ord("D")) || Keyboard_check_pressed(vk_left)) { image_angle = 270; } иначе, если (image_xscale == 1) { if (point_direction(x, y, mouse_x, mouse_y) >= 0 && point_direction(x, y, mouse_x, mouse_y) <= 90) { image_angle = зажим (point_direction (x, y, mouse_x, mouse_y) + 90, 90, 180); } if (point_direction(x, y, mouse_x, mouse_y) >= 290 && point_direction(x, y, mouse_x, mouse_y) <= 360) { image_angle = зажим (point_direction (x, y, mouse_x, mouse_y) + 90, 380, 450); } } иначе, если (image_xscale == -1) { if (point_direction(x, y, mouse_x, mouse_y) >= 90 && point_direction(x, y, mouse_x, mouse_y) <= 250) { image_angle = зажим (point_direction (x, y, mouse_x, mouse_y) + 90, 180, 340); } }Функция огня срабатывает при нажатии мыши и просто уничтожает все разрушаемые предметы в направлении щелчка мыши и появляется в виде спрайта пули , который движется в том же направлении для некоторой визуальной обратной связи.
Самая сложная для реализации функциональность, и, по общему признанию, не совсем полная.Это версия игры — механика висящего горшка. Текущая реализация, возможно, не является сложной и точной физической моделью, но я очень горжусь тем, что мне удалось заставить ее работать в течение короткого цикла разработки игры, и думаю, что она должна послужить хорошей основой для улучшения, если я буду продолжать развивать этот прототип в будущем. .
Соответствующий код веревки:
если (висит) { всп = 0; } иначе, если (vsp < maxFallSpd) { всп += гравитация; } если (instance_exists(якорь)) { висит = 1; } еще { висит = 0; }По сути, если якорь веревки разрушен, она начнет падать. Текущая проблема заключается в том, что веревка должна полностью упасть на землю и быть уничтожена, прежде чем что-либо, «прикрепленное» к ней, начнет падать. Это приводит к некоторой странной физике, когда горшки могут ненадолго зависать в воздухе после того, как их веревки были отстреляны. Теперь, когда я могу увидеть проблему задним числом, я, вероятно, смогу исправить эту небольшую проблему, если вернусь к этому прототипу в будущем.
Как скачать At The Mountains of Madness (itch) через торрент
Всего несколько простых шагов:
- Устанавливаем программу μTorrent, через которую мы будем скачивать торренты
- Выбираем и скачиваем подходящий торрент-файл репака At The Mountains of Madness (itch)
- Двойным кликом открываем скаченный файл, программа μTorrent запустится автоматически и предложит выбрать место для сохранения дистрибутива.
- После того как репак скачается, запускайте его. Начнется установка и... это все, приятной игры!