示例#1
0
	public void Enable()
	{
		state = RecoilController.RecoilStates.goBack;
		actualDistance = maxDistance;
		myTransform.localPosition = originalLocalPosition;
		enabled = true;
	}
示例#2
0
	// 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;
			}
		}
	}