Неправильное движение игрока в Unity по горизонтали
Игрок не движется по горизонтали. Точнее, движется, но беспорядочно. У меня тут пока только управление по вертикали, то есть 3 позиции. Центр (0), верх (3.15) и вниз (-3.15). Я пытался сделать так, чтобы объект автоматически без нажатия на каких-либо клавиш двигался на право с определенной скоростью, не мешая вертикальному управлению, но он как-то очень быстро двигается вперед и возвращается в исходное положение. Может знаете, в чем проблема?
private Vector2 targetPos;
public float Increment;
public float speed;
public float maxHeight;
public float minHeight;
private void Update()
{
transform.position = Vector2.MoveTowards(transform.position, targetPos, speed * Time.deltaTime);
if ((Input.GetKeyDown(KeyCode.W) || Input.GetKeyDown(KeyCode.UpArrow)) && transform.position.y < maxHeight)
{
targetPos = new Vector2(transform.position.x, transform.position.y + Increment);
}
else if ((Input.GetKeyDown(KeyCode.S) || Input.GetKeyDown(KeyCode.DownArrow)) && transform.position.y > minHeight)
{
targetPos = new Vector2(transform.position.x, transform.position.y - Increment);
}
}
Это в Unity:
(Increment = 3.15,
speed = 40 (скорость движение по вертикали),
maxHeight = 3.15,
minHeight -3.15. )