Unityで障害物を行ったり来たりさせる

※自分用メモ

Unityで障害物をいったりきたりさせる

using UnityEngine;

[DisallowMultipleComponent]
public class Oscillator : MonoBehaviour
{
   [SerializeField] Vector3 movementVector; // where to move
   [SerializeField] float period; // seconds it takes for full cycle

   float movementFactor;                         

   Vector3 startingPos;

   // Start is called before the first frame update
   void Start()
   {
     startingPos = transform.position;
   }

    // Update is called once per frame
    void Update()
    {
      if (period <= Mathf.Epsilon) return;
      float cycles = Time.time / period;

      const float tau  = Mathf.PI * 2f;
      float rawSinWave = Mathf.Sin(cycles * tau);

      movementFactor = rawSinWave / 2 + 0.5f;
      Vector3 offset = movementVector * movementFactor;
      transform.position = startingPos + offset;
    }
}