Player.Transform.Position wrong on initilization

I’m trying to set up an Object (Metro) that can pick up another Object (Player). Right now on collision the player.transform.position is equalled to the metro position. Essentially picking the player up. However there is a quirk. The player.transform.position is not what it should be on initialization, the player is put in a position in the scene it’s not supposed to be in. Not what I set it up to be in the editor. Can anyone help me fix that?

public class Metro : MonoBehaviour
{
    [SerializeField] GameObject Player;
    [SerializeField] GameObject MetroObject;
    private bool Collided;
    private bool board = false;

    void Update()
    {
        if (Collided == true)
        {
            Debug.Log("Metro ride conditions met");
            Player.transform.position = MetroObject.transform.position;
        }
   
    }
    public void OnTriggerEnter2D(Collider2D collider)
    {
    if (collider.gameObject.tag == "Player")
        {
            Collided = true;
            Debug.Log("Collided");
        }
    }
}

Can you help me figure this one out?

The inspector shows you local positions. So for example, if we had a parent at position (100,0,0), a child at the same world position would be shown as (0,0,0), since that’s its position relative to the parent.

I imagine you got some parenting going on which might confuse you because of the values shown? You wrote that the script basically does what you intend it to, which would make sense. However, i’m actually not quite sure what your issue is then?

Thanks, but that cant be it, I think. None of the relevant object have parents.

My problem is that since i have this script, my player character spawns in the wrong place

I reiterated my original question, I hope its more clear now

Im sorry, I’m stupid, it just loaded the position from the player prefs