그냥 게임개발자

개발일지_007(UE4게임)블루프린트로 템플런 게임만들기 완료 본문

게임개발

개발일지_007(UE4게임)블루프린트로 템플런 게임만들기 완료

sudoju 2021. 12. 5. 16:09

이 게임하면서 점프하는데 너무 높다라고 생각한 적이 많다.

그렇기에 땅에 바로 닿는 기능을 넣어줄 것이다.

 

 

점프하다가 아래키를 누르면 땅에 내려간다.

 

프로젝트 세팅에 들어가서

입력에 들어가서 Roll/Lower를 추가해주세요

아래키로 설정해주신 다음에

이 키를 누르게 되면 캐릭터 무브먼트가 Add Impulse당하게끔 합니다.

z를 -3000을 주는 이유는 아무리 높게 점프해도 땅에 딱 닿게 그리고 Velocity Change를 체크를 해야 잘 작동합니다

만약에 -3000만큼 힘을 계속 누르고 싶다면 AddForce를 사용하시면 됩니다

3000만큼사랑해

이제 우리는 자석아이템과 부스트 아이템을 넣을 겁니다

다운받은 Mesh폴더안에 이렇게 있는데 Magnet과 BootsPickup을 임포트 해줍니다.

오호라 잘 불러와줬네요

그렇다면 머티리얼은 빠르게 이렇게 적용해주세요!

부스트
마그넷

자 적용하셨으면 이제 마그넷 블루프린트와 부스트 블루프린트를 만들겁니다.

어차피 맵에 나타나게 할거니 Coin 블루프린트를 복제해줍니다.

스태틱메쉬를 우리가 아까 임포트했던 자석 메쉬로 바꿔주고

그다음 이벤트 그래프에있던 코인 이벤트는 다 지워주고

다시만들겁니다.

일단은 ThirdPersonCharacter블루프린트에 들어가

Boolean변수 MagnetActive를 만들어줍니다.

자 그러면 액터가 다른액터랑 겹칠 때 이벤트를 발생하는 ActorBeginOverlap에서 시작합니다.

ThirdPersonCharacter에 있는 MagnetActive를 설정할거기 때문에 형변환을 시켜주고 MagnetActive를 true로 체크해줍니다.

당연하죠 ThirdPersonCharacter와 Magnet이 닿으면 먹은걸로 할꺼니가요

우리는 이 마그넷을 먹었을 때 Print String 즉 뷰포트에 로그를 출력해줄 겁니다.

Magnet Active 즉 활성화 되었다고 알려줄겁니다.

그리고 그 마그넷 스태틱 메쉬를 꺼내줄꺼다.

Set Visibility를 통해서요

그리고 10초동안 지속 된다음

마그넷 액티브를 false로 해줄거다.

그렇다면 자석의 효과는?

당연히 코인을 불러들이는 효과이다.

코인을 불러오는 방법은

이정도 거리안에 ThirdPersonCharacter가 들어오면 캐릭터한테 와서 사라지게끔 할겁니다.

그렇다면 컴포넌트에 Sphere를 추가해줍니다.

스케일을 잘 조절해주시고

우리는 또한 코인에 충돌이벤트가아닌 Sphere 충돌이벤트를 설정해줄겁니다.

 

 

Sphere와 닿았을 때 Magnet Active가 True인지 확인합니다. True이면 코인을 끌어당기게하고 아니면 아무것도 안하게

즉 자석을 먹었냐 안먹었냐 확인을 해주는거죠.

시퀀스를 나눠줍니다.

차례대로 Then0이 실행되고 Then1이 실행이됩니다.

일단 구에 닿으면 코인이 1이 플러스되고 우리는 Used의 변수를 참으로 설정합니다.

만들어줍니다.

그다음 사운드를 내고 딜레이 1초를 주고 사라지게 합니다.

먹은건 완성

그렇다면 캐릭터에 다가오는 애니메이션도 만들어야한다.

Then1에다가 타임라인을 만들고.

벡터트랙추가 길이는 2.00으로 이름은 Slide

그것을 일단 SetActorLocation으로 설정해요

벡터트랙을 작용할 것이다.

위에꺼부터 차례대로 설명하겠다. Slide와 합하는 방법은

벡터보간을 적용해줄 겁니다.

Current에는 노드의 보간 시작점

Target에는 벡터 값을

Delta Time에는 보간 진행에 사용되는 시간

Interp Speed에는 보간속도를 넣어줄 겁니다.

자 차근차근 해봅시다.

이 노드의 보간 시작점은?

당연히 코인의 액터가 월드에 위치해있는 트랜스폼을 얻어올겁니다.

그리고 우리는 그 트랜스폼의 Location만 사용할 것이기에 Break Transform을 이용해서 트랜스폼을 분리 시켜주어서 Location만 이용합니다.

자 목표값은? 당연히 캐릭터의 위치겠죠?

그 다음 보간하는데 경과시간은 월드의 시간을 이용합니다.

그래서 Get World Delta Seconds를 사용해서 월드의 시간 흐름속도가 적용된 프레임 델타시간을 초단위로 바꾸어서 Delta Time에적용한 뒤 보간 속도는 15정도로 해놓고 Slide와 합칩니다

더하는 것은 vector + vector를 더하면 나올겁니다.

그것을 새로운 Location으로 설정해주시면 끝

그러면 자석을 먹으면 이제 코인이 플레이어한테 따라오고 소리내면서 사라질 겁니다

이제 그 Used 변수를 여기에다가 적용시켜주면 됩니다.

Branch를 넣으면 되죠

Used가 False면 마그넷이 적용이 안된거니 그냥 코인이 그대로고 True면 위에 아까처럼 작성해놨으니 잘 작동하겠죠?

해볼까요?

아직 안돼요 마그넷 생성 하게 안했잖아요

자 마그넷 생성하게 하죠

이거 알죠?

 

기억이 나지 않는다면 장애물 설치편을 다시 보자.

 

그렇다면 우리는 이제 부스트 아까 메쉬 임포트했죠?

뷰포트 잘 바꿔주시고 설정해주세요

그리고 우리는 이벤트 그래프를 작성할껀데

역시 이 메쉬와 겹치면 이벤트가 작성되게 해야겠죠?

 

 

 

오 완벽...

아..! 생각해보니 마그넷에 마지막에 DestroyActor를 안해줬네요.

아무튼

이거 설명해보면

ThirdPersonCharacter블루프린트에

Character Movement에 Jump Z Velocity 값이 있습니다.

이 값을 조정해줄 겁니다.

부스트라는 것은 속도를 빨라지게 하는 것이 아닌 점프력을 높여주는거다.

그렇다면 Jump Z velocity를 1200으로 설정해준다.

마그넷이랑 똑같습니다.

 

Spawn Obstacles에 부스트를 추가

 

자 그런데 우리는 첫번째 타일에도 장애물이 추가가되어서 시작하자마자 죽는 것을 경험해본 적이 있을 겁니다.

저도 그랬거든요.

이것을 수정해주어야합니다.

자 마스터 타일을 복제합시다

이것만 떼어주세요

또한 이제 Spawn Tile함수가 있는 곳으로 가주세요

 

자 원래 이거죠? 우리는 함수를 하나 더 만듭니다.

SpawnFirstTile이요

꼭 클래스를 FirstTile로 해주세요~

자 이벤트 그래프에 Spawn FirstTile을 불러주면 처음에는 이것만 불러주고 장애물이 안생기겠죠?

 

언리얼로 처음으로 게임을만든다.

모바일버전이라 했지만 모바일 설정은 나중에 다시 포스트하도록 할께요..

 

오 버그 발견 끝부분 보시면 속도가 너무 빨라 타일 스폰하는 속도를 못따라가네요?

오 이것도 나중에 고쳐봅시다.

 

저는 게임하러 가요~ 

안녕~