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 오브젝트를 끌어나 놓고 실행
짜잔 메인 카메라가 플레이어 위치로 이동해서 함께 움직이는 모습을 볼 수 있다.
'동식이 취업시키기 작전 > UNITY로 FPS GAME 개발(FEAT. 1인칭 마리오파티)' 카테고리의 다른 글
[UNITY] 01. 카메라 회전 (0) | 2023.07.18 |
---|---|
어떤걸 만들것인가 (0) | 2023.07.18 |