🎮Unreal4/C++

[UE4] Parkour System -4 : Short, Normal, Wall Obstacle, Slide

공대 컴린이 2023. 6. 27. 18:22
728x90

Parkour 종류 중 짧은 장애물(Short), 보통 크기의 장애물(Normal), 벽 장애물(Wall)을 넘을 수 있는 통합된 기능, ObstacleMode를 구현해보았다.

🕺🏻 Short, Normal, Wall Parkour 구현하기

Check_ObstacleMode 함수는 Parkour 종류 별 ParkourData를 불러와서, Parkour 가능한 최소/최대 거리와 넓이를 판별하는 과정을 구현했다.

 

💡 직접참조/간접참조

이때 TArray 데이터에 접근하는 방법으로 평소와 다른 직접참조 연산자를 사용해보았다.

직접참조간접참조의 차이점은 자기자신이 직접 소유하고 있는지, 아닌지로 구분한다.

포인터(*)를 사용하면 주소를 가르킬 뿐만 아니라 해당 주소에 있는 공간에 접근하는 것이므로, (*data).Num 처럼 접근하는 것은, datas 클래스의 공간에 접근해서 그 안에 존재하는 Num 값을 간접접근 연산자(.)로 바로 부를 수 있는 것이다.

 

Parkour_Obstacle은 다른 Parkour에 비해 큰 조건없이 플레이할 수 있도록 하였다.

BackupObstacle이 필요한 이유는, Parkour를 진행하는 중에 Obstacle의 충돌을 끄기 때문이다. 몽타주 실행 시 물체에 걸려서 버벅이는 현상을 없애기 위함이다.

 

Parkour가 끝나면 Collision을 다시 켜준다.

 

해당 End_Obstacle 함수는 Short, Normal, Wall 의 Parkour 타입으로 호출하면 된다.

 

DoParkour 함수에서는 ParkourData를 생성하여 Check_ObstacleMode 함수를 통해 초기화된다.

초기화 된 ParkourData를 DoParkour_Obstacle 함수로 전달하여 해당 Parkour 종류에 맞도록 실행시킨다.

🕺🏻 Slide Parkour 구현하기

공중에 어떠한 물체가 떠있을 때 아래로 슬라이딩하며 넘어갈 수 있는 Slide Parkour를 구현해보았다.

 

SlideMode인지 검사하는 Check_SlideMode 함수에서는 먼저, Parkour가 가능한 거리인지를 검사한 뒤, 지나가고자 하는 Obstacle 아래에 슬라이딩할 수 있는 공간이 있는지를 Box Trace로 검사하였다.

 

BoxTrace의 검사 결과가 True라면 무언가 충돌되는 막힌 물체가 있다는 뜻이므로, False인 경우에만 Slide Parkour가 실행될 수 있도록 구현하였다.

 

DoParkour_Slide 함수에서는 슬라디이 몽타주를 실행시키고, DoParkour_Obstacle과 마찬가지로 Collision을 On/Off 시켰다.

 

DoParkour 함수에서 CheckSlideMode의 함수를 실행시킨 뒤, DoParkour_Slide 함수를 실행시키며 기능을 수행하였다.

 

컴파일 후 프로그램을 실행시킨 결과는 아래와 같다.

728x90