To explain better, the moving block gameobject will start at lets say X = 76. It will move left to X = 69. Then it will start to return towards X=76 but instead it will stop at around 75.9. Then it will move left to 68.9. So it will continuously move slightly more to the left with each pass. I don’t want to use Mathf.PingPong.
public class MovingBlock : MonoBehaviour
{
public bool inTrigger = false;
private bool cR = true;
public bool left, right, up, down;
public float vel = 5;
public float timeToMove;
private bool currentPhase;
void Update()
{
if (inTrigger == true)
{
if (cR == true)
{
StartCoroutine(Move());
cR = false;
}
if(currentPhase == true)
{
if (down == true)
{
transform.Translate(Vector2.down * Time.deltaTime * vel);
}
if (left == true)
{
transform.Translate(Vector2.left * Time.deltaTime * vel);
}
if (right == true)
{
transform.Translate(Vector2.right * Time.deltaTime * vel);
}
if (up == true)
{
transform.Translate(Vector2.up * Time.deltaTime * vel);
}
}
if(currentPhase == false)
{
if (down == true)
{
transform.Translate(Vector2.up * Time.deltaTime * vel);
}
if (left == true)
{
transform.Translate(Vector2.right * Time.deltaTime * vel);
}
if (right == true)
{
transform.Translate(Vector2.left * Time.deltaTime * vel);
}
if (up == true)
{
transform.Translate(Vector2.down * Time.deltaTime * vel);
}
}
}
}
private IEnumerator Move()
{
currentPhase = true;
yield return new WaitForSeconds(timeToMove);
currentPhase = false;
yield return new WaitForSeconds(timeToMove);
cR = true;
}
void OnTriggerEnter(Collider other)
{
if (other.GetComponent<Collider>().tag == "Player")
{
inTrigger = true;
cR = true;
}
}
}