void Update() { bool startMagnetizing = Input.GetMouseButtonDown(0); bool continueMagnetizing = Input.GetMouseButton(0); bool stopMagnetizing = Input.GetMouseButtonUp(0); if (startMagnetizing) { magnetizableObject = FindNearestMagnetizableObject(Input.mousePosition, magnetizeRadius); magnetizableObject?.SetMagnetized(true); } if (continueMagnetizing) { magnetizableObject?.UpdateMagnetizePosition(Input.mousePosition); } if (stopMagnetizing) { if (magnetizableObject != null) { magnetizableObject.SetMagnetized(false); } } }
private MagnetizableObject FindNearestMagnetizableObject(Vector2 point, float radius) { Collider2D[] overlappedCollider2DArray = Physics2D.OverlapCircleAll(point, radius); foreach (Collider2D overlappedCollider2D in overlappedCollider2DArray) { MagnetizableObject magnetizableObject = overlappedCollider2D.gameObject.GetComponent <MagnetizableObject>(); if (magnetizableObject != null) { return(magnetizableObject); } } return(null); }