OnTriggerEnter2D вызывается один раз, при столкновении с триггером, когда как Update вызывается каждый кадр.
Таким образом согласно Вашему коду при столкновении Вы
один раз останавливаете движение Вашего препятствия, после чего тут же снова запускаете его в Update. Можно просто при столкновении установить скорость = 0.
Также вместо сравнения с помощью оператора "==" лучше сравнивать тег с помощью CompareTag(). Работать будет и так и так, но лучше сразу приучать себя делать правильно (положительно повлияет на скорость выполнения кода).
И обратите внимание, что если используете стандартные теги Unity, то тег игрока там не "player", а "Player". Заглавные буквы в данном случае критичны, и если у объекта тег "Player", то при сравнении по "player" код не отработает.
Вот пример кода:
public class Map : MonoBehaviour
{
public float speed;
void Update()
{
transform.Translate(Vector2.left * (speed * Time.deltaTime)); //Движение объекта
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.CompareTag("Player"))
{
speed = 0;
}
}
}