| Разработка и ромхакинг > Разработка игр |
| Mega Man Nero (не рабочее не название) |
| << < (2/2) |
| Eugen:
--- Цитата: Sharpnull от 25 Сентябрь 2019, 21:05:47 ---Если не сложно. Насчёт instance_place(), в доках написано, что если не нужен id, использование place_meeting() будет чуть быстрее. --- Конец цитаты --- Код для вертикальных платформ под спойлером, закомменчен слабо, могу чутка позже пояснить. --- Код: ---push_hor=false push_ver=false x=floor(x) y=floor(y) if(timer<150) { timer=timer+1 } if(timer>=150) { save_vsp=vsp vsp=0 vsp=save_vsp*-1 timer=0 } x+=hsp //vertical collision if(place_meeting(x, y+vsp, o_floor)) { while(!place_meeting(x, y+sign(vsp), o_floor)) { y+=sign(vsp) y=floor(y) } //vsp=0 } //Pixel-precise collision with objects var push_ds=instance_place_list(x, y+floor(vsp), o_humanoid) if(ds_exists(push_ds, ds_type_list)) { for(i=0; i<ds_list_size(push_ds); i++) { with(ds_list_find_value(push_ds, i)) { if(y>other.y) { vsp=other.vsp y=floor(y+other.vsp+1) y=floor(y) } if(y<other.y && !place_meeting(other.x, other.y-1, id)) { y=(other.y-(bbox_bottom_offset+other.bbox_top_offset+1)) } } } } if(ds_exists(push_ds, ds_type_list)) { ds_list_destroy(push_ds) } //vertical collision for humanoids var carry_ds=instance_place_list(x, y-1, o_humanoid) if(ds_exists(carry_ds, ds_type_list)) { for(i=0; i<ds_list_size(carry_ds); i++) { with(ds_list_find_value(carry_ds, i)) { if(pushed_ver==false) { y=floor(y+other.vsp) y=floor(y) pushed_ver=true } } } } if(ds_exists(carry_ds, ds_type_list)) { ds_list_destroy(carry_ds) } /* //humanoids is under pressure var push2_ds=instance_place_list(x, y+1, o_humanoid) if(ds_exists(push2_ds, ds_type_list)) { for(i=0; i<ds_list_size(push2_ds); i++) { with(ds_list_find_value(push2_ds, i)) { vsp=1 } } } if(ds_exists(push2_ds, ds_type_list)) { ds_list_destroy(push2_ds) } */ y+=vsp y=floor(y) var push3_ds=instance_place_list(x, y+1, o_humanoid) if(ds_exists(push3_ds, ds_type_list)) { for(i=0; i<ds_list_size(push3_ds); i++) { with(ds_list_find_value(push3_ds, i)) { y=y+abs(other.vsp)+1 y=floor(y) } } } if(ds_exists(push3_ds, ds_type_list)) { ds_list_destroy(push3_ds) } x=floor(x) y=floor(y) --- Конец кода --- Про разницу place_meeting и instance_place - знаю, просто мне в некоторых ситуациях айди объекта таки был нужен. А там, где он перестал быть нужен - не стал откатывать обратно. |
| Eugen:
И снова небольшой апдейт. В этот раз добавлены а) прицел для гарпуна диагонального (наконец-то). Показывает, какой именно из врагов будет притянут б) "Сквозные" платформы. На них можно приземляться, с них можно спрыгивать, сквозь них можно ходить по горизонтали. Гарпун также проходит сквозь них |
| Eugen:
Ну, пожалуй, еще несколько видео и всякого. 1) Наземные враги (пантеоны) таскают с собой вилы. Могут бить вблизи, бить вблизи вверх, пикировать с вилами вниз с воздуха, а также - швырять вилы в игрока. Швырнутые вилы можно отбить - сначала они лихо закручиваются в воздухе, и в этот момент их можно направить обратно во врага. AI пантеонов в принципе почти готов - они агрессивны, умеют перепрыгивать ямы, преследовать игрока и тд. Конечно, забагованные и допускают ошибки, но это уже мелочи. 2) Переделана нимношк анимация воздушной рулетки - теперь это буквально рулетка, крутящая атака. 3) Добавлены партикли "крови" при ударе по врагам - не задля эджовости, а чтобы дать понять что урон был нанесен. 4) Добавлен самый натуральный enemy_step. Если вкратце: игрок может отпрыгнуть от любого из врагов, используя его как платформу. Вернее - как стену, потому что enemy_step действует не как обычный прыжок, а как воллджамп. Позволяет продлевать воздушные комбо и даёт некоторую маневренность. Чтобы выполнить - нужно коснуться врага и нажать прыжок (или дэш-прыжок). В него можно оффсетить удары в комбах. 5) Добавлен новый тип врагов - аналог "фаустов" из DMC4. Летают, носят плащик. Без него - почти беззащитны, трусливы и получают больше урона, с ним - агрессивны и сложны. Плащик "снимается" либо броском гарпуна, либо отбиванием прожектайла. 6) Фаусты могут метать в игрока ножи-прожектайлы. Игрок может их отбивать. Отбивание их - отдельный подпункт: - игрок может отбить прожектайл обратно в метнувшего фауста - любой атакой мечом. - игрок может отбить прожектайл вперед - любой атакой мечом, нажав "вперед" до атаки или во время атаки - игрок может отбить прожектайл вверх - апперкотом или любой атакой мечом, нажав "вверх" во время или до атаки - игрок может отбить прожектайл вниз - хелмкрашером или любой атакой мечом, нажав "вниз" во время или до атаки 7) Еще фаусты могут отталкивать назойливого игрока атакой ближнего боя. 8) Добавлено главное меню игры (с двумя кнопками выхода потому что я художник и так вижу, ни в одной игре еще не было пунктов Exit и Exit 2). Игра автоматически определяет тип подключенного геймпада и выводит соответствующие промпты (для хы-ящика, сони и всех остальных падов). Можно менять управление - как на паде, так и на клавиатуре. Измененное управление сохраняется после выхода из игры, можно вернуть дефолтное. Видосики: |
| Навигация |
| Главная страница сообщений |
| Предыдущая страница |