# Transform.Position when Play changes

I am facing an issue as follow:

The circle is located circle location before play the game.

when press play it goes to another place as shown here after press play

here is the code I am using, I am pretty sure its a if statement issue:

public class circularmouse : MonoBehaviour {
[SerializeField] float timeCounter = 0;
[SerializeField]bool Direction = false;
[SerializeField] float angularSpeed = 0f;

public Vector3 startPosition;

private void Start()
{
startPosition = transform.position;
}

void Update()
{
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
angularSpeed = 4f;
Direction = true;
}
if (Input.GetKeyDown(KeyCode.RightArrow))
{
Direction = false;
angularSpeed = 4f;
}
if (Direction) //if direction is true
{
timeCounter += Time.deltaTime * angularSpeed;
float x = Mathf.Cos(timeCounter);
float y = Mathf.Sin(timeCounter);
transform.position = new Vector3(x, y, 0);
}
else
{
timeCounter -= Time.deltaTime * angularSpeed;
float x = Mathf.Cos(timeCounter);
float y = Mathf.Sin(timeCounter);
transform.position = new Vector3(x, y, 0);
}

}
}

Direction is false by default. The way you have it set up, if Direction is false, it does this:
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

timeCounter -= Time.deltaTime * angularSpeed;
float x = Mathf.Cos(timeCounter);
float y = Mathf.Sin(timeCounter);
transform.position = new Vector3(x, y, 0);

angularSpeed defaults to 0. The Cosign of 0 is 1, The Sin of 0 is 0. Thus, it sets your new position at 1, 0.

⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

You need to check if angularSpeed is above 0 before continuing past the input checks.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

Try adding if (angularSpeed <= 0) return; before the movement code.