언리얼의 기본사용법에 익숙해질겸 횡스크롤 플랫포머로 간단하게 제작을 시도하기로했다.
오늘은 횡스크롤 샘플프로젝트를 먼저 분석을시도해봤고 일단 기본 캐릭터를 만들어서 샘플의 캐릭터에서 어떤항목을 추가할때마다 변경되는부분을 알아봤다.
샘플의경우 강의를 보면서 실습했을때와달리 캐릭터가 이미 배치되어있고 스폰을하지 않는 방식이였는데 강의때는 써보지 않았던 경우가 어떤식으로 처리했나 궁금해서 디테일을 살펴본결과 배치된 캐릭터의 폰 카테고리를 보면
이런식으로 Auto Possess Player라고 항목이있는데 기본은 Disabled지만 저걸 Player로 변경시켜주면 PlayerStart에서
캐릭터가 스폰되지않고 배치된 캐릭터에 빙의해서 게임을 시작할 수 있다. 나는 캐릭터를 배치하는거보단 스폰시키는것을 선호해서 삭제하고 게임모드를 새로 작성해서 마네킹을 스폰하도록 수정했다.
기본적으로 만드는 게임모드와 샘플의 게임모드에서 한가지 차이점을 발견했는데 UCLASS에 MinialAPI라는 클래스 지정자가 입력되있었고 공식문서에서 찾아본결과
이런 역할을 한다고하며 게임모드의경우 다른곳에서 함수를 사용할일이 없다고 판단되어 동일하게 수정해줬다.
이후 캐릭터에대한 이동을 작업했는데 샘플에서 또 강의에서 써보지 못한 코드를 발견했다.
GetCharacterMovement()->bOrientRotationToMovement = true;
GetCharacterMovement()->RotationRate = FRotator(0.0f, 720.0f, 0.0f);
캐릭터 이동에관한 설정으로 bOrientRotationToMovement 를 true로 설정하면 입력키로 이동을 하면 컨트롤러가 같이 회전하도록 설정하는 부분이다 아래 RotationRate는 회전 속도를 의미한다고 한다. Y축값이 올라갈수록 회전속도가 빨라진다고하는데 유니티랑은 축이 달라서 Y축이 위를의미하는게 아닌데 왜 Y축 값이 좌우 회전속도를 의미하는지는 아직잘모르겠다.
언리얼에선 X가 정면 Y가 우측 Z가 상단 이렇게되니 좌우 회전속도가 Y값에따라 바뀐다는건 RotationRate의 각 축의 값은 해당 축을 중심으로 하는 회전이아닌 해당 축 방향으로 회전하는 속도로 일단 추측중이다.
이런식으로 입력값에 맞춰서 컨트롤러가 자동으로 회전하게 있게 설정할 수있다. 횡스크롤 게임의경우 보통 회전할때 카메라 방향을 보면서 회전하지 반대를 보면서 회전하지않는데 내가 작업한 캐릭터의 경우 회전은 하지만 회전방향이 카메라 반대방향을 보면서 회전해서 조금 보기가 거슬린다.
이렇게 된 이유는 샘플의경우 카메라와 맵을 180도 회전시킨 상태로 되어있었지만 왜 굳이 반대로 돌려놓는지 이해가 잘안가서 원상태로 돌리고 코드를 수정해본 결과 저런식으로 나타난다.
샘플의 실행화면인데 정상적으로 실행시켰을경우엔 이런식으로 화면방향을 바라보면서 캐릭터가 회전하는것을 볼 수 있다.
샘플과 동일하게 카메라를 180도 회전시키고 입력 AddMovementInput의 축을 샘플과 반대로해놨었는데 동일하게 맞춰주니 똑같은 연출이 되도록 구현할 수 있었다. 카메라를 180도 돌리고 축을 반대로 뒤집어주지않으면 키 입력을 받을때 좌우가 반전되서 이동하는걸 볼 수 있었다.
다음은 샘플의 경우 블루프린트로 애니메이션 인스턴스를 작성했지만 강의때처럼 C++과 블루프린트를 혼합한 애니메이션과 지금은 달리기밖에 안하지만 걷기 - 달리기 로 애니메이션을 분할해볼 생각이다.
'Unreal > [UE4] 플랫포머 제작 연습(C++)' 카테고리의 다른 글
6. 버튼을사용한 캐릭터이동, 배경음악 (0) | 2023.11.13 |
---|---|
5. 2단점프, 버튼UI (1) | 2023.11.12 |
4. 사라지는 발판 (0) | 2023.11.11 |
3. 움직이는발판 버그수정, 튕기는 발판 (1) | 2023.11.09 |
2. 애니메이션, 움직이는 발판 (0) | 2023.11.09 |