GIt 링크
https://github.com/GyungSikHan/BootCampHomeWork/blob/main/Blueprint/3%2C4_JumpGame.zip
숙제
어제 오늘 배운 블루프린트를 통해 간단한 점프 맵 만들기
일단 어제 만들어 놓은 맵에 기능을 조금 추가할 예정이다
Bridge
이 액터는 Local 축을 기준으로 회전하는 액터이다
캐릭터와 충돌시 캐릭터를 멀리 날려버리는 액터이다
구현부는 위의 사진처럼 되어있다
Tick 함수에서 SetActorLocalRotation을 이용해 실시간으로 회전하게 만들었다
OnComponentHi를 사용해 Character와 부딪히면 LaunchCharacter 함수를 사용해 멀리 날려버린다
사라지는 바닥
이 액터와 캐릭터가 충돌하면 액터의 Mesh가 사라지고 충돌체도 꺼지면서 캐릭터가 땅으로 떨어지게 하였다
Floor는 BP_Player와 충돌 시 Mesh와 충돌체를 끄면서 화면상에 보이지 않고 더이상 충돌을 하지 않게 구현했다
충돌이 끝나면 다시 충돌과 Mesh를 보여지게 하기 위해 EndOverlap을 이용하여 구현했습니다
미끌어지는 바닥
미끌어지는 바닥은 함정의 대부분을 차지한다
InterpToMovement 컴퍼넌트에 비헤이비어 타입에서 PingPong을 사용하여 계속해서 움직임이 보간하도록 했습니다
캐릭터가 땅을 밟으면 미끄러집니다
다른 함정들과 마찬가지로 캐릭터와 충돌 시 BP_Player에서 CharacterMovement 컴포넌트를 가져와 그 안에 지면 마찰과 감속 걷기 제동의 값을 변경하여 캐릭터가 미끄러지도록 구현했습니다
충돌이 끝나고 다른 바닥을 밟았을 땐 미끄러지면 안되므로 지면 마찰과 감속 걷기를 원래대로 되돌려 미끄러지지 않게 하였습니다
Wall
이 벽은 위 아래로 왔다갔다 하는 캐릭터와 충돌 시 멀리 날려버리는 벽으로 구현하였습니다
BeginPlay에 현재 위치를 저장해준다
위아래로 움직이기 위해 특정 위치에 도달하면 움직이는 방향을 변경하도록 구현했습니다
Tick 함수에서 Arrive가 true고 현재 위치와 시작 위치를 저장해 준 Start를 Distance로 거리를 계산해줍니다
계산된 값과 특정 갑을 비교하여 Distancs가 그 값보다 작거나 같으면 아래로 이동시켰습니다
Arrive와 두 번째 값이 false면 위로 올라가게끔 구현하였고 이 때 start와 현재 위치가 같다면 Arrive를 true로 바꿔주면서 다시 아래로 이동하게 하였습니다
자동차
이 게임의 핵심 함정으로 특정 위치를 계속해서 왔다갔다 하는 액터입니다
이 액터는 Arrive가 true일 때 X축 방향으로 이동하게 구현하였습니다
fale면 Rotator가 true인지 판단하는데 true면 Data가 180과 같은지 판단하여 같지 않다면 액터가 회전하게 구현했습니다
이 때 Data 값에 회전시킬 때 넣은 값을 누적해 더해주면서 180도만 회전할 수 있도록 구현하였습니다
Data가 180과 같다면 Rotator를 false로, Data를 0으로 Arrive를 true로 바꿔주면서 다시 움직이게 해줍니다
이때 반대 방향으로 이동해야 하므로 Speed에 -1을 곱해주어 반대로 이동하게 해줍니다
Rot 함수는 Rotator를 true로 Arrive를 false로 변경해주는 함수입니다
이 함수를 호출하기 위해 BP_Overlap 클래스에서 BP_Car와 충돌시 BP_Car의 Rot 함수를 호출하여 구현하였습니다
Warp
플레이어가 맵을 벗어나면 시작 위치로 돌아갈 수 있도록 구현했습니다
Warp 클래스에서 BP_Player와 충돌 시 BP_Player의 Start Location 함수를 호출합니다
이 함수는 BeginPlay에서 시작 위치를 저장한 변수를 가지고 처음 위치로 돌려줍니다
EndGame
도착 지점에 도착하면 UI를 띄우게 하였습니다
이 역시 Warp와 마찬가지로 충돌 시 BP_Player의 EndGame함수를 호출합니다
EndGame 함수를 보기 전 BeginPlay에서 UI Widget을 생성하고 생성된 변수를 숨긴 뒤 뷰포트에 추가해줍니다
EndGame 함수가 실행되면 Disable Input 함수로 입력이 들어오지 않게 하고 UI가 보이게 해줍니다
수업 외 구현 부
애니메이션 블루프린트에서 State Machine 안에서 기본 Jump와 달릴 때 Jump를 나눠 Jump Loop, Land를 구현했습니다
Spee 값에 따라 점프 모션과 Land 모션이 달라집니다
기본 움직임과 Jump 사이에선 Falling 이 true고 Speed에 따라 Jump 모션이 다르게 구현하였습니다
Jump에서 Jump Loop로 가는 것은 Jump 애니메이션의 Time remaining 값이 0.5보다 작거나 같을 때 변경되도록 구현하였습니다.
점프가 끝나고 땅에 도착하는 모션은 Falling이 False일 때 변경되도록 하였고 이때 Speed 값에 따라 모션이 다르게 구현했습니다
마지막으로 원래 기본 움직이는 애니메이션으로 바뀌기 위해 Land 애니메이션의 Time Remaining 값이 0.8보다 작다면 바뀔 수 있게 하였습니다
시연 영상 및 설명
https://www.youtube.com/watch?v=1k22NfeBFZY&t=1s
느낀점
이번 프로젝트를 진행하면서 오랜만에 블루프린트를 사용해 생각한 시간보다 더 오래 걸렸던것 같다
수업 때 배운 내용을 복습하는 겸 여러 함정도 만들었고 원래 알고있던 것들도 조금씩 구현했습니다
하지만 오랜만에 하기도 하고 생각처럼 구현이 잘 안됐습니다
그래도 구글링을 하거나 질문을 하는 등으로 해결을 하였습니다
그러면서 간단한 것도 생각처럼 잘 나오지 않아도 끝까지 하면 어떻게든 구현할 수 있다는 자신감도 생겼고 이를 통해 더욱더 열심히 참여해야겠다는 생각이 들었습니다
'Unreal Bootcamp > Blueprint' 카테고리의 다른 글
4 Blueprint (0) | 2025.01.12 |
---|---|
3 Blueprint (0) | 2025.01.12 |
2 Blueprint (0) | 2025.01.12 |
1 Blueprint (0) | 2025.01.12 |