Rapidly scaling trigger inconsistent

I have a sphere trigger attached to an object that over .25 seconds scales larger, and disappears when finished growing. This trigger is supposed to fire off a script when a specific object collides with it. The problem is that its producing inconsistent results when it reaches its max radius. With the objects stationary at the outer radius sometimes it picks them up and sometimes it doesn’t. Here is the code:

    void Update()
    {
        time += Time.deltaTime;
        float atkScale = (time / .25f) * maxScale;
        if (atkScale >= maxScale)
            atkScale = maxScale;
        transform.localScale = new Vector3(atkScale, 1f, atkScale);
        if (atkScale == maxScale)
        {
            gameObject.SetActive(false);
        }
    }

    private void OnTriggerEnter(Collider col)
    {
        if (col.gameObject.layer == GetEnemyLayer())
        {
            if (!enemiesHit.Contains(col.gameObject))
            {
                CollisionScript();
                enemiesHit.Add(col.gameObject);
            }
        }
    }

Is it possible to get this to produce consistent results?

I solved this for now by adding in another sphere trigger that stays at the max size and keeps a list of enemies within it. When its set to deactivate the gameobject at full scale it first checks that list to see if there are any in there that didn’t get the collision script called and then calls it for them. I don’t know if there is a better way, but this works for now.

So you know, doing stuff per-frame when the physics isn’t running per-frame is starting with a bad concept. What you’re doing here screams of using a query instead which doesn’t require a collider and can be run per-frame.