void Start()

    {

        timeAfterSpawn = 0f;

        spawnRate = Random.Range(spawnRateMin, spawnRateMax);

        target = FindObjectOfType<PlayerController>().transform;

    }


    void Update()

    {

        timeAfterSpawn += Time.deltaTime;


        if (timeAfterSpawn >= spawnRate)

        {

            timeAfterSpawn = 0f;


            GameObject bullet = Instantiate(bulletPrefab, transform.position, transform.rotation);

            bullet.transform.LookAt(target);

            spawnRate = Random.Range(spawnRateMin, spawnRateMax);

        }

    }

}


총알피하기 게임에 대한 코드인데 이해가 안가는 부분이 하나 있어서 질문드립니다.


플레이어가 있고, 총알생성기가 있습니다. 위는 총알 생성기에 들어갈 스크립트입니다.

총알생성기에서는 플레이어의 위치를 target 변수에 받고, 그 위치로 총알을 발사하는 게임입니다..


그런데 


target 관련해서 물어보고싶은게 있는데,

target 변수에 값을 start() 메서드안에서 할당하잖아요?

제가 알기로는 start() 메서드는 초기에 한번만 실행되는걸로 알고있는데 어떻게 target의 역할을 수행하는건가요? 

이게 무슨말이냐면, 게임을 하면서 플레이어는 계속 움직일텐데 start()메서드는 딱 한번만 호출을 하잖아요?

그리고 start() 메서드 안에서
target = FindObjectOfType<PlayerController>().transform;
이 코드로 플레이어 오브젝트의 transform을 받을거구요..

근데 어떻게 target이 게임 내내 바뀌는 플레이어 위치를 추적할 수 있는건가요? 어떻게 이해를 해야할지 여쭤봅니다.