61 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			61 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using UnityEngine; | |||
|  | 
 | |||
|  | public class SmoothFollow : MonoBehaviour{ | |||
|  | 	private const float SMOOTH_TIME = 0.3f; | |||
|  | 	public bool LockX; | |||
|  | 	public float offSetX; | |||
|  | 	public float offsetY; | |||
|  | 	public bool LockY; | |||
|  | 	public bool LockZ; | |||
|  | 	public bool useSmoothing; | |||
|  | 	public Transform target; | |||
|  | 	public GameObject hudElements; | |||
|  | 	private Transform thisTransform; | |||
|  | 	private Vector3 velocity; | |||
|  | 	bool hudActive = true; | |||
|  | 	 | |||
|  | 	private void Awake(){ | |||
|  | 		thisTransform = transform; | |||
|  | 		velocity = new Vector3(0.5f, 0.5f, 0.5f); | |||
|  | 		target = GameObject.Find("Crafter").transform; | |||
|  | 	} | |||
|  | 
 | |||
|  | 	void Update(){ | |||
|  | 		if(hudActive){ | |||
|  | 			if(Input.GetKeyDown(KeyCode.H)){ | |||
|  | 				hudElements.SetActive (false); | |||
|  | 				hudActive = false; | |||
|  | 			} | |||
|  | 		} | |||
|  | 		else{ | |||
|  | 			if(Input.GetKeyDown(KeyCode.H)){ | |||
|  | 				hudElements.SetActive (true); | |||
|  | 				hudActive = true; | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | 
 | |||
|  | 	private void FixedUpdate(){ | |||
|  | 		var newPos = Vector3.zero; | |||
|  | 		if(useSmoothing){ | |||
|  | 			newPos.x = Mathf.SmoothDamp(thisTransform.position.x, target.position.x + offSetX, ref velocity.x, SMOOTH_TIME); | |||
|  | 			newPos.y = Mathf.SmoothDamp(thisTransform.position.y, target.position.y + offsetY, ref velocity.y, SMOOTH_TIME); | |||
|  | 			newPos.z = Mathf.SmoothDamp(thisTransform.position.z, target.position.z, ref velocity.z, SMOOTH_TIME); | |||
|  | 		} | |||
|  | 		else{ | |||
|  | 			newPos.x = target.position.x; | |||
|  | 			newPos.y = target.position.y; | |||
|  | 			newPos.z = target.position.z; | |||
|  | 		} | |||
|  | 		if(LockX){ | |||
|  | 			newPos.x = thisTransform.position.x; | |||
|  | 		} | |||
|  | 		if(LockY){ | |||
|  | 			newPos.y = thisTransform.position.y; | |||
|  | 		} | |||
|  | 		if(LockZ){ | |||
|  | 			newPos.z = thisTransform.position.z; | |||
|  | 		} | |||
|  | 		transform.position = Vector3.Slerp(transform.position, newPos, Time.time); | |||
|  | 	} | |||
|  | } |