public void InitiateCreatureGrabbed(TractionBeamController beamController) { objectGravity.SetGravity(false); rBody.velocity = Vector3.zero; rBody.angularVelocity = Vector3.zero; // to prevent nulls in position or using old information to calculate release force, initializing all frames - currently disabled //for (int i = 0; i < lastPositions.Length; i++) //{ // lastPositions[i] = transform.position; // lastPositionTimes[i] = 0; //} isCreatureTracted = true; currBeamController = beamController; relativeDistance = Vector3.Distance(transform.position, currBeamController.transform.position); initialRelativeDistance = relativeDistance; relativeDirection = transform.position - currBeamController.transform.position; relativeDirection = relativeDirection.normalized - currBeamController.transform.forward; relativeRotation = Quaternion.identity * transform.rotation; controllerInitialRotation = beamController.controller_Event.transform.rotation; beamPFX = currBeamController.BeamPFX; //beamLengthFixer = currBeamController.beamLengthFixer; //beamPFX.startLifetime = relativeDistance * beamPFX.startSpeed * beamLengthFixer; }
public void ResetCreatureGrabbed() { //gameObject.SetActive(false); //gameObject.SetActive(true); objectGravity.SetGravity(true); isCreatureTracted = false; currBeamController = null; // Detach creature from the UFO object and set its parent back to default. transform.parent = defaultParent.transform; // Enlarge the creature back to its original size. transform.localScale = defaultScale; // Turn the object's physics back on (seems to pernamently break physics). //GetComponent<Rigidbody>().isKinematic = true; }