[Unreal] 게임 제작을 위한 시작해요 언리얼 4주차 : 물리 엔진 활용

Kim Dongil·2022년 9월 28일
0

언리얼엔진

목록 보기
4/18
post-thumbnail

텔레포트 장치 만들기

버튼 + 트리거 (Box collision 만들기)

변수 추가 > 액터 검색 > 액터 레퍼런스

텔레포트 지점을 활성화 시키지 않은 치명적 실수를 방지하기 위한 방법

텔레포트 지점 > is valid

is not valid (유효하지 않다면)

print string (텔레포트지점을 활성화 하십시오! 라는 문구가 100초동안 빨간색으로 뜨게 해라)

set game paused (게임을 중지시켜라)

텔레포트

트리거에 닿으면 활성화 되는 이벤트

파란핑에 들어온 액터를 텔레포트

이동할 텔레포트 지점에 트랜스폼 구하기

이대로 실행시키면 밋밋하기 때문에 이펙트 입히기

자동 활성화 체크 해제

이펙트 드래그해서 레퍼런스 만들기

활성화 명령어

노드 우회로 핀 생성 (마우스 가운데 버튼 x 좌클릭 더블 클릭)

텔레포트 타면 곧바로 타지기 때문에 이펙트를 볼 수가 없다 > 딜레이 추가하기

텔레포트 타고도 이동하기 전까지 캐릭터를 움직일 수가 있다 > 못움직이게 하기 (캐릭터 무브먼트한테 명령 내려야함 )

캡슐 컴포넌트 : 물리적인 역할 (충돌) 

메시 : 실제 캐릭터 애니메이션, 움직임을 나타냄  (비쥬얼)

캐릭터 무브먼트 : 캐릭터의 움직임을 관장함  (움직임)

캐릭터 무브먼트는 캐릭터라는 구조를 가진 블루프린트에만 부착이 되어있다 

모든 액터가 저 컴퍼넌트를 가지고 있지 않다

내 영역에 들어온 액터가 먼저 캐릭터형인지 검색해야한다

BP_ThirdPersonCharacter에 형변환 (들어온 액터가 마네킹 캐릭터형이냐? 라고 묻는것) > set movement mode (맞다면 움직이지 마라)

혹시라도 계속 못움직이는 상황을 미연에 방지하기 위해 새롭게 만들어준다

최종 블루프린트


물리기능으로 낙하하는 발판 만들기

트리거 박스 사용

액터 게임에서 숨김 x (활성화 돼있으면 액터가 무조건 안보이게 됨)

에디터 빌보드 스케일 0 (아이콘이 있는데 나중에 많아지게 되면 레벨 제작할 때 굉장히 번거로워짐)

콜리전 컴포넌트 > 게임에서 숨김 o > 발판 추가
(콜리전 컴포넌트의 트리거 영역을 게임 내에서 숨기기 위해)

이대로 두면 일반 발판이고 떨어지지 않기 때문에 블루프린트를 써야함

발판 > set simulate physics > 시뮬레이트 체크 > 딜레이 추가

점프대 만들기

의미x 외형적으로 버튼 만들기 > 트리거 설정(위치,크기)

BP_ThirdPersonCharacter에 형변환 > Add Impulse 노드 추가 (충격을 주는)

화살표 컴포넌트 > 각도 설정
(얼마만큼에 충격량을 어디로 날려야할지를 알아야 하기때문에)

get forward vector > 벡터를 float로 > 연산 > 변수설정(2000정도)

이 옵션을 체크해 줘야만 우리가 지정한 뱡항과 힘을 줄 수 있음

미사일 함정 만들기

트리거 박스 설치
액터 게임에서 숨김 x
에디터 빌보드 스케일 0
콜리전 컴포넌트 > 게임에서 숨김 o
발판 설치

변수 추가 (미사일)

날아갈 스피어(미사일) 설치

어디가 앞인지 모르기 때문에 화살표 추가 > 발사체 이기때문에 무버블로 설정해야함

발사체 컴포넌트 추가
초기 속도, 발사체 중력 스케일 설정
(0.1이면 중력에 영향을 거의 안받음)

맞으면 튕겨져 나가도록 바운스 옵션 추가

여기까지 했으면 게임을 시작하자마자 공이 발판과 상관없이 날아가게 됨

미사일 자동활성화 기능 꺼주기

이제 미사일과 미사일함정이 연동되도록 해줘야함

다시 함정으로 > 미사일 변수 > BP_미사일 오브젝트 레퍼런스 > 인스턴스 편집가능

BP_THIRDPERSONCHARCTER에 형변환
(함정에 걸렸는지 확인하기 위해서)

미사일 > activate(활성화)
(이제 미사일이 발동이 됨)

미사일과 함정이 이제 잘 작동하지만 튕겨져 나가기만하고 별 다른 효과가 없음

미사일은 동글동글하기 때문에 box collision이 아닌 sphere collision을 해주고 크기 설정

실패 태그 추가

Q&A

  1. 루프린트를 C++코드로 변환 가능한가요?
    C++코드를 블루프린트로 자동으로 변환은 안딘다.
    내가 만든 코드를 하나의 함술 만들어주면 블루프린트가 그 코드를 불러올 수는 있다.
    즉 API를 C++로 만들어서 블루프린트에서 호출 해주는 방법이 있다.
    반대로 블루프린트로 만든 코드를 C++로 가능한 것은 언리얼엔진4에는 있었는덴 5버전이 들어오면서 기능이 사라졌다.
    가능은 하지만 구조는 C++ 기반이고 블루프린트가 그 위에 있게 활용하는게 가장 무난하고 확장할때도 편하다.

  2. 블루프린트에 다양한 기능이 있는데 어떤 기능이 있는지도 몰라서 활용하기가 힘듭니다. 정리된 문서가 있을까요?
    상황을 계속 만들어보면서 자연스럽게 학습하는걸 권장한다.
    노드가 정리된게 있냐 > 너무 많기 때문에 어떤게 다 있는지 모르겠다.
    결과적으로 어떤게 있고 어떤걸 잘 이용할지는 여러분들이 완벽하게 파악할려면 잘 모아져있는 목록이 필요한게 아니고 직접 소스코드를 보면서 이해할 수 있는 레벨이 되야한다.
    정리하자면 많이 만들어보면서 익히자.
    정말 원리가 궁금하다면 모든 소스코드를 공짜로 제공하고 있는 언리얼엔진에 소스코드를 보자.

  3. 트리거 박스는 박스모양 밖에 안되나요? 물체의 형태에 맞게 배치하고 싶습니다.
    직접 시연을 통해서 보여드리겠다.
    트리거 박스를 설치하면 콜리젼컴포넌트라고 되어있다.

원하는 형태의 트리거박스를 원한다면 직접 블루프린트로 만드는게 좋다.

빈공간에 우클릭 > 블루프린트 클래스

  1. 지금까지 작업했던 것을 독립적인 실행 파일로 만들고 싶습니다.
    플랫폼 > windows > 프로젝트 패키지
    게임 기본 맵으로 지정되어있는것이 켜진다.
    (시작해요언리얼4주차)

원하는걸로 바꾸고 패키징하면 된다.

  1. 사운드는 어떻게 추가하나요?
    배경음을 추가 하시고 싶으시다면
    앰비언트 사운드 검색

특정시점에서 효과음을 내고싶다면 만들어진 블루프린트에서 오디오 컴포넌트 관련된 효과를 넣어주시고 플레이하면 된다.

4주차 수강 결과물

링크

4주차 도전과제

링크

참고 영상

[게임 제작을 위한 시작해요 언리얼] 4주차 물리 엔진을 활용한 다양한 장치 제작

0개의 댓글