| using UnityEngine; | 
| using System.Collections; | 
|   | 
| public class PingPongScale:MonoBehaviour { | 
|   | 
|     public Transform reference; | 
|     public Vector3 amplitue; | 
|     public float speed; | 
|   | 
|     Vector3 referenceScale = Vector3.zero; | 
|   | 
|     void OnEnable() { | 
|         referenceScale = reference == null ? this.transform.localScale : reference.localScale; | 
|     } | 
|   | 
|     float x = 0f; | 
|     float y = 0f; | 
|     float z = 0f; | 
|     void LateUpdate() { | 
|   | 
|         if(Mathf.Abs(amplitue.x) > 0.001f) { | 
|             x = referenceScale.x - amplitue.x * 0.5f + Mathf.PingPong(Time.time * speed,amplitue.x); | 
|         } | 
|         else { | 
|             x = referenceScale.x; | 
|         } | 
|   | 
|         if(Mathf.Abs(amplitue.y) > 0.001f) { | 
|             y = referenceScale.y - amplitue.y * 0.5f + Mathf.PingPong(Time.time * speed,amplitue.y); | 
|         } | 
|         else { | 
|             y = referenceScale.y; | 
|         } | 
|   | 
|         if(Mathf.Abs(amplitue.z) > 0.001f) { | 
|             z = referenceScale.z - amplitue.z * 0.5f + Mathf.PingPong(Time.time * speed,amplitue.z); | 
|         } | 
|         else { | 
|             z = referenceScale.z; | 
|         } | 
|   | 
|         this.transform.localScale = new Vector3(x,y,z); | 
|     } | 
| } |