Vector2 AroundDangerPoint(ProjectileScript threat) { float offset = 3.0f; if (smartAvoider == null) { smartAvoider = threat; if (Mathf.Abs(transform.position.y - threat.gameObject.transform.position.y) > Mathf.Abs(transform.position.x - threat.gameObject.transform.position.x)) { if (Random.Range(0, 2) == 0) { smartAvoiderChoice = 0; return(new Vector2(threat.GetTargetedPosition().x + offset, threat.GetTargetedPosition().y)); } else { smartAvoiderChoice = 1; return(new Vector2(threat.GetTargetedPosition().x - offset, threat.GetTargetedPosition().y)); } } else { if (Random.Range(0, 2) == 0) { smartAvoiderChoice = 2; return(new Vector2(threat.GetTargetedPosition().x, threat.GetTargetedPosition().y + offset)); } else { smartAvoiderChoice = 3; return(new Vector2(threat.GetTargetedPosition().x, threat.GetTargetedPosition().y - offset)); } } } else { if (smartAvoiderChoice == 0) { return(new Vector2(threat.GetTargetedPosition().x + offset, threat.GetTargetedPosition().y)); } else if (smartAvoiderChoice == 1) { return(new Vector2(threat.GetTargetedPosition().x - offset, threat.GetTargetedPosition().y)); } else if (smartAvoiderChoice == 2) { return(new Vector2(threat.GetTargetedPosition().x, threat.GetTargetedPosition().y + offset)); } else { return(new Vector2(threat.GetTargetedPosition().x, threat.GetTargetedPosition().y - offset)); } } }