System Communication

Is there a way for 2 ECS Systems to communicate with each other?

Essentially I want one system to govern the enemy AI, and another system to govern the bullets. How do I check that there has been a collision (in distance) between entities of the two systems?

An AI system could produce events which a bullet system could consume. There’s a good number of threads about events.

tertle’s event system would be good for when you need messaging in the future. For your use case though you should write a separate system called perhaps BulletEnemyCollisionSystem that queries for the LocalToWorlds of bullets, and then in a ForEach loop detect if each bullet’s LocalToWorld is close enough to each enemy. Correct me if I’m wrong, but systems should govern the flow of data between groups of closely-related components. In your case, its between components related to bullets and those related to enemies.