private void PickUpObject() { if (pickupable != null) { var fabricator = (Fabricatable)(pickupable.GetComponent("Fabricatable")); if (pickupable.GetComponent <Rigidbody>() == null) { var tMesh = fabricator.TDtext.GetComponent <TextMesh>(); var rest = int.Parse(tMesh.text); if (rest == 0) { return; } tMesh.text = (rest - 1).ToString(); var position = pickupable.transform.position; var size = pickupable.transform.lossyScale; fabricator = (Fabricatable)(pickupable.GetComponent("Fabricatable")); var bonus = fabricator.bonus; pickupable = Instantiate(fabricator.Fabricator); fabricator = (Fabricatable)(pickupable.GetComponent("Fabricatable")); fabricator.bonus = bonus; tMesh = fabricator.TDtext.GetComponent <TextMesh>(); tMesh.text = (rest).ToString(); pickupable.transform.localPosition = position; pickupable.transform.localScale = size; } fJoint.connectedBody = pickupable.GetComponent <Rigidbody>(); effect = pickupable.GetComponent <ThrownEffect>(); if (effect != null) { effect.bonus = fabricator.bonus; } throwing = false; throwable = null; } else { fJoint.connectedBody = null; } }
private void FixedUpdate() { if (throwing && throwable != null) { Transform origin; if (trackedObj.origin != null) { origin = trackedObj.origin; } else { origin = trackedObj.transform.parent; } float slow = (float)Math.Pow(throwable.mass, 1.0 / 3.0); if (effect != null) { effect.Throw(); effect = null; } if (origin != null) { throwable.velocity = origin.TransformVector(Controller.velocity / slow); throwable.angularVelocity = origin.TransformVector(Controller.angularVelocity * rotateSpeed / slow); } else { throwable.velocity = (Controller.velocity / slow); throwable.angularVelocity = (Controller.angularVelocity * rotateSpeed / slow); } throwable.maxAngularVelocity = throwable.velocity.magnitude; } throwing = false; }