Итак, существует проект под названием BulletML, который является языком разметки для создания сложных паттернов частиц / пуль. Вам почти наверняка понадобится перенести код на свой собственный язык, но он может сделать действительно удивительные вещи.
Например, этот босс был сделан в (сильно модифицированном) расширении BulletML для Unity3D (автор этого паттерна загрузил это видео и Misery безумно, а также хорошо 1 ). Это самый сложный вариант этого врага, и он показывает, на что BulletML способен довольно хорошо (и, кроме того, посмотрите на других боссов Мизери, таких как Wallmaster ).
Или я могу показать этот пример, который является шаблоном, который я написал, работая над расширением для The Last Federation , используя более старую версию системы, которая менее дружественна к модам и использует только односимвольные переменные AZ:
Зеленые пули, создающие эти кольца, порождаются родительской пулей, которая вращается с высокой скоростью, но сами не имеют движения. Они наносят огромный урон, удерживая игрока на большем расстоянии, ограничивая его оружием с меньшим уроном и позволяя мобильным защитникам преследовать игрока (игрок выиграл, если неподвижная структура в середине там была разрушена).
Вот часть синтаксиса XML, которая создает эти пузыри:
<bullet_pattern name="Barrier">
$WallShotAngle B=.3 A=90
$WallShotAngle B=.3 A=-90
$WallShotAngle B=.3 A=0
$WallShotAngle B=.375 A=180
</bullet_pattern>
<var name="WallShotAngle">
<bullet angle="[A]" speed="4000" interval_mult=".01" dumbfire="1" shot_type="GravityWavePurple">
<wait time="[B]" />
<change angle="0" speed="1000" time=".0001" />
<spawn>
<bullet_pattern>
<bullet angle="[A]" speed="0" shot_type="CurveBarGreen" damage_mult="8">
<wait time="12" />
<die />
</bullet>
</bullet_pattern>
</spawn>
<die />
</bullet>
</var>
На снимке экрана вы можете увидеть некоторые фиолетовые кадры "гравитационной волны", которые почти мгновенно перемещаются от источника (который вращается) к краю пузыря, после чего он порождает зеленый выстрел "изогнутой полосы", который находится там в течение 12 секунд до despawning. Синие и желтые снимки я пропустил, так как они намного сложнее.
Один из других паттернов ( артиллерийский снаряд ) в расширении на самом деле был написан Мизери, хотя я внес в него некоторые изменения. Вначале это проникающий выстрел с низким уроном, который летит на дальние дистанции, а затем взрывается в огромный фейерверк, наносящий тонны урона. Его максимальная дальность была намного выше, чем мог достигнуть игрок, по существу заставляя игрока действовать на короткой дистанции, что было выгодно для других типов NPC-юнитов из-за эффекта дробовика (больше пуль сгруппировалось в небольшой зоне).
С BulletML легко работать, и он может делать удивительные вещи. Пули могут изменять направление, изменять скорость, порождать другие шаблоны, рано умирать, повторять сбор команд в цикле, использовать задержки, менять изображение спрайта пули, следовать за своим родителем (или нет) ... И все, что оно не поддерживает, вы могли бы напиши в него.
Я определенно рекомендую это, если вы делаете серьезную игру в жанре «стреляй» Вам все равно придется потренироваться в математической системе координат, чтобы получить желаемые фигуры, о чем Чаранор говорит в своем ответе, но пули, такие как BulletML, дадут вам гораздо больше гибкости, что вы потратите больше времени на разработку новых шаблонов, чем на выяснение как их кодировать
- Чтобы объяснить, насколько хорош Misery, эти ролики направлены против половых боссов со стартовым оборудованием : без модулей, без расходных материалов и базового стрелка из гороха. И хе получает только один удар, несмотря на удлиненный характер боя. Хорошо, 9 ударов по центрифуге (который не появится до третьего этажа после того, как игрок определенно получит улучшения, в результате чего будет сравнительно увеличен как минимум двойной урон).