Почему бы не выставить участника геймплея для добавления новых сущностей извне (например, класс оружия)?
По сути, что-то вроде этого:
private void OnAttack(object sender, SomeEventArg e)
{
gameplay.CreateEntity(BazookaProjectileClass, x, y, z, dx, dy, dz);
}
Edit:
Вы не должны создавать свои пули в классе игрового процесса, потому что они должны находиться только под контролем оружия. Оружие определяет тип снарядов или эффектов, которые нужно добавить. Если вы справитесь с этим в классе игрового процесса, зачем вообще использовать разные классы оружия?