레벨은 우리가 흔히 생각하는 Map과 비슷한 개념이다. 세트장이라고 생각하면 된다.
현재 레벨에 배치된 모든 오브젝트를 볼 수 있다.
게임 개발을 쉽게 하기 위해 정해진 틀이 있다.
게임 모드, 플레이어 컨트롤러, 폰 으로 구성이 된다.
게임 모드 : 게임 내에서 심판 역할을 하는 구성 요소. 게임의 시작과 끝을 담당, 게임의 규칙을 담당
플레이어 컨트롤러 : 게임 내에서 플레이어의 영혼 역할. 일밙적으로 하나의 폰에 빙의(Possess)를 해서 그것들을 소유하거나 관리하는데 쓰임.
폰 : 게임 내에서 플레이어의 육체 역할. 일반적으로 하나의 플레이어 컨트롤러에 의해 빙의당해 플레이어의 입력을 처리하는 실질적 대리인을 구현함.
Blueprint > Gamemode, PlayerController, Character 생성.
Gamemode의 blueprint에서 클래스 디폴트 -> 사용할 PlayerController, Character 설정 가능.
그리고 현재 레벨에서 사용할 Gamemode는 월드 세팅에서 설정.
블루프린트 화면에서 보이는 노드들은 블루프린트 노드.
블루프린트는 입력핀과 출력핀이 존재한다. 왼쪽이 입력핀, 오른쪽이 출력핀.
Event BeginPlay
: 게임을 플레이할 때 시작되는 노드Event ActorBeginOverlap
: 다른 액터와 충돌이 발생했을 때 > 출력핀의 Other Actor는 충돌 발생한 액터를 의미Event Tick
: 매 프레임마다 처리되는 노드 캐릭터 이동은 Event Tick에서 구현하는 것이 편리하다.
Add Movement Input
: 이동을 구현하는 노드Add Controller pitch/roll/yaw input
: 회전을 구현하는 노드Get Actor Rotation
: Actor의 Rotation 을 획득. Get Forward Vector
: Rotation의 정면 벡터획득Rotate Vector Around Axis
: 축을 기준으로 회전, GetForwardVector
의 Return 값에 RotateVectorAroundAxis
를 응용Enhanced Input Action
이라는 것을 사용한다.
Input mapping Context
를 이용해 여러 액션을 매핑한다.
각 액션을 매핑한 후, GameController의 BeginPlay 이벤트에 향상된 입력 서브 시스템을 연결해준다. 연결할 때, AddMappingContext
를 통해 연결한다.
그런데 우리가, MoveForward에 W, S 키를 매핑해놨다고 하자. 앞으로 갈 때 w, 뒤로 갈 때 s라고 정의해주지 않았기 때문에, Modifiers
를 이용한다.
Modifiers의 Negate를 사용하면 반대가 된다.
GameController에서 AddMappingContext
를 통해 IMC를 사용할 것이라고 선언해준다음, 입력 액션에 대한 동작은 Character의 BP에서 만들어준다.
pitch
, Yaw
, Roll
은 각각 회전 축이 다르다.
Roll
은 x축을 중심으로 회전하고,
Pitch
는 y축을 중심으로 회전하고,
Roll
은 z축을 중심으로 회전한다.
x, y, z 축은 이렇게 생각하면 편하다.
저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!