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);
 | 
						|
	}
 | 
						|
} |