private void ApplyMagneticForce(MagnetizedObject obj) { Vector3 rawDirection = transform.position - obj.Trans.position; float distance = rawDirection.magnitude; float distanceScale = Mathf.InverseLerp(Range, 0f, distance); float attractionStrength = Mathf.Lerp(0f, Strength, distanceScale); obj.Rb.AddForce(rawDirection.normalized * attractionStrength * obj.Polarity, ForceMode.Force); }
public void OnTriggerEnter(Collider other) { if (other.gameObject.CompareTag("Enemy") || other.gameObject.CompareTag("Player")) { MagnetizedObject newMag = new MagnetizedObject(); newMag.Col = other; newMag.Rb = other.GetComponent <Rigidbody>(); newMag.Trans = other.transform; newMag.Polarity = 1; ListMagnetticObj.Add(newMag); } else if (other.gameObject.CompareTag("Sun")) { MagnetizedObject newMag = new MagnetizedObject(); newMag.Col = other; newMag.Rb = other.GetComponent <Rigidbody>(); newMag.Trans = other.transform; newMag.Polarity = -1; ListMagnetticObj.Add(newMag); } }