Позволение персонажу отслеживать снаряды, которые он выпустил, может работать нормально, но это также означает, что всякий раз, когда вы удаляете этого персонажа, его снаряды также исчезают. Если я правильно помню, это то, что произошло на Тиберийском Солнце, когда вы уничтожили парящую MLRS - если у нее были ракеты в полете, когда она взорвалась, они бы исчезли.
Разрешение функции обновления символов возвращать созданные им снаряды, поэтому цикл обновления может помещать их в список снарядов, также может работать очень хорошо. Обработка нескольких снарядов за обновление может быть такой же простой, как и всегда возвращение списка - он может быть пустым или содержать один или несколько снарядов.
Вот что я хотел бы предложить: хранить снаряды и персонажей (героев, союзников, врагов и т. Д.) В объекте World и передавать ссылку на этот объект каждому персонажу, с которым нужно взаимодействовать (путем запуска снарядов). в мир, или проверяя ближайших врагов). Для каждой ракеты, которую запускает ваш герой, он вызывает функцию addProjectile своего мира. Если герою необходимо выполнить другие действия, которые влияют на остальную часть игры, объект World может предоставить для этого функциональность без необходимости загромождать основной цикл обновления специальными случаями.
Конечно, вы не ограничены только одним подходом. Вы можете объединить их, когда вам нужно. Если у вас есть самонаводящиеся снаряды, вы можете дать им ссылку на свою цель, чтобы они могли обновлять свою скорость при каждом вызове обновления. Если у вас есть снаряды, которые не могут повредить тот, который их выпустил, вы можете дать им ссылку на их «владельца». Если персонаж может иметь только 2 снаряда одновременно (как в некоторых старых играх), вы можете попросить персонажей следить за их активными снарядами, чтобы они знали, когда прекратить стрельбу. Вы можете даже позволить снарядам следить за своими «друзьями», если они стреляют во взрыве, чтобы они могли координировать свое движение, чтобы сформировать причудливые стекающиеся образцы. ;)