bash.im ithappens.me zadolba.li
733

Watch your six

В университете в качестве курсовой работы по программированию мы небольшой группой писали игрушку — двумерную платформер-стрелялку.

Все было здорово, пока мы не стали учить героя пользоваться ружьём. Планировался хитрый расчёт траектории пули, но привязать её начало к кончику дула никак не получалось. На время мы убрали объект героя и сделали так, что пуля начинает свой полет с земли, а ее прорисовка начинается лишь от положения дула. Реализовали — всё замечательно, «невидимка» перемещается по экрану, а вылетающие из пустоты пули исправно поражают врагов.

Принялись за объект героя, написали ему систему поражений и прикрутили обратно. Тут началось странное — при попытке атаковать первого же врага главный герой погибал.

В чём дело? Условия смерти героя мы описали верно, разве что кровь ещё не нарисовали. В игре используется всего один объект «пуля». Бились над проблемой долго и безрезультатно.

Наконец меня осенило. Герой оказался самоубийцей! При выстреле пуля начинала полет с земли, догоняла героя и смертельно поражала его в пятую точку.

Проблему решили, написав новый объект «пуля_героя», для которой сам герой был неуязвим. Товарищи, никогда не забывайте про кровь — по крайней мере на время разработки!