인생언리얼5가 새로 나와 한번 따라해보왔다.
이영호선생님 책은 쉽고 깔끔하게 쓰는것 같다.
뉴레벨을 만들고 베이직을 선택하고 LV_Shooting을 저장합니다.
키보드의 입력을 받기위해서 언리얼은 EnhancedInput System을 마련했다.
Input Folder를 만들고 우선 InputAction을 만들어보자. 이름은 thirdPerson폴더의 이름과 다르게 하기위해 IA_ShipMove
Value Type을 Axis2D로 하자. InputAction의 변수 타입정도만 맞추면 되는것 같다.
실제 키보드 맵핑을 할 InputMappingContext를 만들자
WASD버튼을 누르면서 키보드 아이콘을 클릭하면 설정되고 비페이비어를 설정하자. 인풋이 XYZ로 들어오기 때문에 Y를 받기위해 Swizzle(벡터요소를 재배치)을 선택하고 음수를 입력받기위해 Negate를 선택해야한다.
입력을 받을 블루프린트를 폰으로 만들자. Cube와 카메라를 컴포넌트로 추가해줍니다.
다음과 같이 블루프린트를 작성하고 IMC_Shooting을 지정한다. IA_ShopMove Event에서 Action Value를 받아와 프린트할수 있다.
블루프린트를 만들고 부모를 게임모드베이스로 선택후 이름을 GM_Shooting으로 하고 블루프린트 아이콘을 눌러 설정해주고 디폴트폰을 위에서 만든 BP_Ship으로 해서 게임 스타트시 BP_Ship이 나타나게 합니다.
실행해서 마우스 클릭후 WASD를 입력하면 화면 좌상에 X,Y좌표가 나타난다. 눌린쪽이 1이 되고 안눌리면 0이 된다
Print대신에 다음과 같이 하면 액터가 좌우로 움직입니다.
슈팅게임은 Ship이 위아래로 움직여야 하므로 xy가 아닌 yz로 입력되게 MakeVec노드를 사용해보겠습니다.
speed라를 float변수를 만들고 컴파일후 디폴트를 5로 지정후
MakeVector출력과 곱해줍니다.
WD키를 동시에 누를경우 대각선의 길이가 길어지므로 노말라이즈를 해줍니다.
EventTick의 DeltaSeconds를 곱해주고 speed의 Default값을 100으로 해서 스피트를 보정해줍니다. 이유는 클라이언트 컴퓨터마다 성능차를 보정해주기 위함인데 느린 컴퓨터의 Tick은 느리기 때문에 스피드 곱해주면 스피드가 커지는 효과를 만들어 컴퓨터간 격차를 맞춰줍니다. 자세한건 인생언리얼 교재를 참조하시기 바랍니다.
'게임프로젝트 > 슈팅게임' 카테고리의 다른 글
배경 만들기 (0) | 2025.03.10 |
---|---|
충돌처리 Collision (0) | 2025.03.10 |
Enemy, Factory 제작하기 (0) | 2025.03.10 |
슈팅게임 - 총알발사 (0) | 2025.03.10 |