public void Enable() { state = RecoilController.RecoilStates.goBack; actualDistance = maxDistance; myTransform.localPosition = originalLocalPosition; enabled = true; }
// Update is called once per frame void Update () { Vector3 recoilDirection = Vector3.back; Vector3 actualPosition = myTransform.localPosition; float realBackwardVelocity = backwardVelocity*Time.deltaTime; float realForwardVelocity = forwardVelocity *Time.deltaTime; Vector3 newPosition = Vector3.zero; if(state == RecoilController.RecoilStates.goBack) // GO BACK (ANIMATION AFTER SHOT) { newPosition = actualPosition+(recoilDirection*actualDistance); if(actualDistance>interpolationCut) { myTransform.localPosition = Vector3.Lerp(actualPosition,newPosition,realBackwardVelocity); actualDistance = Vector3.Distance(myTransform.localPosition,newPosition); }else{ state = RecoilController.RecoilStates.goForward; actualDistance=maxDistance-actualDistance; } }else if(state == RecoilController.RecoilStates.goForward) //GO FORWARD, (ANIMATION RELOADING) { newPosition = actualPosition-(recoilDirection*actualDistance); if(actualDistance>interpolationCut) { myTransform.localPosition = Vector3.Lerp(actualPosition,newPosition,realForwardVelocity); actualDistance = Vector3.Distance(myTransform.localPosition,newPosition); }else{ state = RecoilController.RecoilStates.goBack; actualDistance = maxDistance-actualDistance; enabled=false; } } }