Game Development, 게임개발/개발

카메라 플레이어에게 고정하기, Unity 3D

게임이 더 좋아 2021. 2. 23. 03:25
반응형
728x170

 

 

GameObject는 움직이는데 카메라는 움직이지 않는 경우가 있다.

그럴 때 어떻게 해야할까?

 

 

마치 이렇게..

Main Camera를 어떻게좀 해야겠지..?

 

그래서 스크립트를 하나 만들자.

"FollowPlayer"라고 이름지어서 만들자.

항상 스크립트 제목은 명확하게 뭔지 알 수 있게 지어야한다.

짧게가 아니라! 뭔 스크립트인지 알 수 있게 !! 그 후 짧게 짓는 것이다.

    public GameObject player; // subject
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        transform.position = player.transform.position; // left variable has belong the things that have this script

    }

딱 이렇게 지어주자.

GameObject는 우리가 수동으로 지정해줄 것이므로 Public 선언해줬고

저기 Update 에서는

player라는 GameObject의 Position을 매 프레임마다 할당해줄 것이다.

어디에?? 이 스크립트를 가지고 있는 Gameobject의 Position에게 

 

그러면 이 스크립트는 누가 가지고 있어야할까? 바로 Main Camera ㄱㄱ

 

 

했더니??

 

엥... GameObject와 같은 위치에 지정해주니까 저러네..? 조금 더 위에 있으면 좋겠는디.. GTA5처럼?

그러면 저 코드에서 좀 수정해주면 되겠지??

3D에서는 Y좌표가 Vertical property를 결정한다. 즉.. position.y를 잘 수정해주면 되겠다.

X,Z가 Horizontal property를 결정한다.

 

조금 뒤쪽 위에서 바라보게 만들자 ㅇㅋ? 

즉 offset을 주는 것이다. 임의로 수치를 조정하는 것을 offset이라 한다.

 

    void Update()
    {
        transform.position = player.transform.position + new Vector3(0, 5.5f, -8); // left variable has belong the things that have this script

    }

 

왜 new Vector3를 선언했느냐??

transfrom.postion의 type이 바로 Vector3이다. 

Typecast를 하지 않을 거면 같은 타입으로 맞춰줘야 연산이 가능하겠지??

 

결과를 보자

 

 

오 잘움직이네??

나머지 맘에 안들면 저런 방식으로 알아서 고쳐주자 

** 항상 무엇인가 대입할 때 직접 숫자를 넣어서 대입하는 것은 제일 안좋은 습관이다.. 왜냐면.. 그 값이 쓰이는 곳이 2군데 이상이면 나중에 고치려면 2군데를 찾아서 고쳐야하니까..ㅎ

변수로 선언해서 offset 같은 것으로 따로 저장해두자

 

그럼 20000

728x90
반응형
그리드형