public class Attractor : MonoBehaviour
{
public LayerMask AttractionLayer;
public float gravity = 10;
[SerializeField] private float Radius = 10;
public List<Collider2D> AttractedObjects = new List<Collider2D>();
[HideInInspector] public Transform attractorTransform;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Awake()
{
attractorTransform = GetComponent<Transform>();
}
// Update is called once per frame
void Update()
{
SetAttractedObjects();
}
private void FixedUpdate()
{
AttractObjects();
}
void SetAttractedObjects()
{
AttractedObjects = Physics2D.OverlapCircleAll(attractorTransform.position, Radius, AttractionLayer).ToList();
}
void AttractObjects()
{
for(int i = 0; i < AttractedObjects.Count; i++)
{
AttractedObjects[i].GetComponent<Attractable>().Attract(this);
}
}
private void OnDrawGizmosSelected()
{
Gizmos.color = Color.magenta;
Gizmos.DrawWireSphere(transform.position, Radius);
}
}