이동식이 2023. 7. 19. 09:07
728x90

1. 캐릭터 좌우 회전

카메라는 상하좌우로 회전해야 되지만 캐릭터는 좌우만 회전하면 된다.

카메라를 좌우로 움직이게 만들었던 스크립트를 복붙해서 만들자.

public class PlayerRotate : MonoBehaviour
{
    // rotate speed
    public float roSpeed = 200f;

    // 회전값 미리 저장 할 변수
    float mx;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        // 마우스로 입력 받기(좌우)
        float Mouse_X = Input.GetAxis("Mouse X");

        // 값 누적시키기
        mx += Mouse_X * roSpeed * Time.deltaTime;

        // 물체를 회전시키기
        transform.eulerAngles = new Vector3(0, mx, 0);
    }
}

스크립트가 완성 되었다면

 

하이어라키 창 > Player를 선택 > 방금 만든 스크립트를 인스펙터창에 드래그 앤 드롭해주면 플레이러를 좌우로 회전하는 하나의 컴포넌트가 만들어져서 게임 오브젝트에 적용됐다.

 

이제 카메라와 게임 오브젝트인 Player가 마우스가 움직임에 따라 고개를 돌린다. 하지만 아직까지는 카메라와 플레이어 함께 몸을 돌릴 뿐 다른 위치에 각각 존재하고있다. 우리는 1인칭 플레이어를 진행해야 하므로 카메라 위치를 플레이어의 위치로 이동시키는 스크립트를 짜보자

 

2. 플레이어 위치로 카메라 이동

하이어라키 > Player > 우클릭 후 Empty Object로 빈 오브젝트를 생성하고 Player 아래에 위치시킨다. (나는 높이 0.25로 설정)

 

프로젝트 > CamFollow.cs 생성

 

우리가 할 작업은?

- 게임 오브젝트의 위치에

- 카메라 위치시키

public class CamFollow : MonoBehaviour
{

    // 목표가 될 transform 컴포넌트
    public Transform target;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        // 카메라 위치를 목표 트랜스폼 위치로 이동
        transform.position = target.position;
    }
}

이제 해당 스크립트는 하이어라키 뷰 > main camera에 넣고 > 해당 컴포넌트에 CameraPosition 오브젝트를 끌어나 놓고 실행

요 아래 보시면 cam rotate, cam follow라는 컴포넌트 생성하고 cam follow 컴포넌트에 Camposition이라는 player 아래의 GameObject를 넣은 것을 확인
귀여워

짜잔 메인 카메라가 플레이어 위치로 이동해서 함께 움직이는 모습을 볼 수 있다.