//call this when tornadoReference already exists public void Init(TornadoScript tornadoRef, float springForce, float damper, float maxDistance, float minDistance) { //make sure this s enabled (for reentrance) enabled = true; //save tornado reference tornadoReference = tornadoRef; //initialize the spring spring = gameObject.AddComponent <SpringJoint>(); spring.spring = springForce; spring.damper = damper; spring.maxDistance = maxDistance; spring.minDistance = minDistance; spring.connectedBody = tornadoRef.gameObject.GetComponent <Rigidbody>(); spring.autoConfigureConnectedAnchor = false; //set initial position of the caught object relative to its position and the tornado Vector3 initialPosition = Vector3.zero; initialPosition.y = transform.position.y; spring.connectedAnchor = initialPosition; //StartCoroutine(refreshImpulse()); }
void OnEnable() { if (tornadoScript == null) { tornadoScript = target as TornadoScript; } }
static void DrawGizmos(TornadoScript tornado, GizmoType gizmoType) { Handles.color = Color.red; Handles.DrawWireDisc(tornado.transform.position, Vector3.up, tornado.minDistance); Handles.color = Color.yellow; Handles.DrawWireDisc(tornado.transform.position, Vector3.up, tornado.maxDistance); Handles.color = Color.blue; Handles.DrawLine(tornado.transform.position, tornado.transform.position + tornado.rotationAxis * 20); Handles.color = Color.green; Handles.DrawWireDisc(tornado.transform.position, Vector3.up, tornado.tornadoCollider.radius); Handles.color = new Color(0, 0, 1, 0.3f); Handles.DrawSolidArc(tornado.transform.position, Vector3.left, Vector3.forward, tornado.lift, tornado.minDistance); }