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