OnTriggerStay2D when trigger is spawned on object not moving

OnTriggerStay2D does not trigger if it’s being spawned on an object which is not moving. If that object moves after the trigger has spawned it will activate the trigger.

How can I make this trigger fire on Start() if there are any enemies in it?

In my case it’s an AOE field on the ground which should damage object staying inside it:

  void OnTriggerStay2D(Collider2D other)
  {
    float timerComparison = Time.time;

    if ((timerComparison - timer) * 1000 > 250)
    {
      other.gameObject.GetComponent<EnemyStats>().Damage(dpsValue / 4);
      timer = Time.time;
    }
  }

I think a coroutine always looking for objects inside this field would be more expensive and not very good for me as my scene could have quite a few if these?

The solution to my problem was inside the Rigidbody2D’s Sleeping Mode, of the object which contains the above script, which had to be set to Never Sleep. The problem was not only related to when this trigger was spawned on an already existing object, but also when objects entered and then stopped moving inside this field.

The reason for this is explained on this page under the Sleeping section: