void Update() { foreach (var payload in Payloads) { var delta = payload.position - transform.position; if (delta.sqrMagnitude <= LockonDistance * LockonDistance) { HingeJoint hj = gameObject.AddComponent <HingeJoint>(); hj.connectedBody = payload.GetComponent <Rigidbody>(); hj.axis = Vector3.forward; hj.anchor = Vector3.zero; TractorBeam.Create(transform, payload); // <WIP> maybe we want to "correct" the hang distance // in case you came in so hot that you are unusually // close (or far) from the payload? Meh... Payloads.Remove(payload); return; } } }