30 lines
		
	
	
		
			747 B
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			30 lines
		
	
	
		
			747 B
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using System; | ||
|  | using System.Collections; | ||
|  | using System.Collections.Generic; | ||
|  | using Ktyl.Util; | ||
|  | using UnityEngine; | ||
|  | 
 | ||
|  | public class Oscillate : MonoBehaviour | ||
|  | { | ||
|  |     [SerializeField] private float _amplitude = 1; | ||
|  |     [SerializeField] private float _period = 1; | ||
|  |     [SerializeField] private SerialFloat _objectTimeScale; | ||
|  | 
 | ||
|  |     private Vector3 _initialPosition; | ||
|  |     private float _time; | ||
|  | 
 | ||
|  |     private void OnEnable() | ||
|  |     { | ||
|  |         _initialPosition = transform.localPosition; | ||
|  |     } | ||
|  | 
 | ||
|  |     private void LateUpdate() | ||
|  |     { | ||
|  |          | ||
|  |         _time += Time.deltaTime * _objectTimeScale; | ||
|  |         var oscillate = Mathf.Sin(_time / _period) * _amplitude; | ||
|  | 
 | ||
|  |         transform.localPosition = _initialPosition + transform.up * oscillate; | ||
|  |     } | ||
|  | } |