같은 축으로 사용된다면 생성한 매핑 옆의 +버튼을 누른다 - 키보드 s - 스케일 : -1.0
좌우도 넣을것이니 새로 매핑한다.
이벤트 그래프 - 우클릭 - 생성한 매핑 이름 검색 - 축 값 : 그냥 값을 가져다 쓴다. / 축 이벤트 : 키가 입력될때마다 이벤트가 호출된다(지금은 이벤트 사용) -
Axis Value : 매핑할때 세팅한 스케일 값
키가 입력될때마다 실행 선을 따라서 이벤트가 실행된다.
캐릭터 자체를 이동시킬 주체를 지정해줘야 제대로 입력을 받는다.
‘빙의’ 라는 개념이다.
캐릭터 블루프린트 - 디테일 - 폰항목 - 플레이어 자동 빙의 (0 ~ 7개 까지 동시에 입력 받을 수 있다 - 패드 7개까지 연결할 수 있다는 의미다.) - Player 0번 선택(기본은 0번이다.)
이벤트 그래프 - 우클릭 - Add Movement Input 클릭 - World Direction 설정 후 Axis Value와 Scale Value 연결
World Direction : Scale Value(매핑때 할당한 스케일 값)와 World Direction에 설정한 값을 곱한 값으로 이동시킨다. - 즉, x : 1.0으로 준다면 W를 누를때 World Direction(1.0) * 스케일 값(1.0)이 곱해져서 이동한다.
Scale Value : 매핑에 할당된 스케일 값이 들어올 핀
좌우도 위와 같이 진행
마우스를 움직여 카메라 회전
이동 매핑과 마찬가지로 세팅하지만 키 할당은 마우스 X(HorizontalLook 세팅), 마우스Y(VerticalLook)
게임에서 상하 시야는 마우스를 위로하면 아래를 보고, 아래로 내리면 위를 보니 스케일 값을 1.0으로 둬야한다.
실제 게임에서는 옵션으로 수직축 반전 시키는 기능이 있다.
마우스 맞춰서 회전
이벤트 그래프 - 우클릭 후 마우스 매핑 노드 검색 - 실행 핀 끌어 놓고 Add Controller (마우스 회전 축) Input 검색
수직 축 회전은 카메라 세팅에서 ‘폰 제어 회전 사용’을 체크해야한다.
캐릭터 카메라 배치
캐릭터 블루프린트 - 컴포넌트 창 - 메시 컴포넌트 클릭 - 좌측 상단 +버튼 클릭 - (한글로)스프링 검색 - 스프링 암 컴포넌트 클릭 - 좌측 상단 +버튼 클릭 - 카메라 검색 후 카메라 컴포넌트 클릭
스프링 암 컴포넌트 : 캐릭터를 따라오는 카메라를 고정시켜주는 컴포넌트다.
디테일 - 카메라 항목 - 타깃 암 길이 : 카메라가 캐릭터를 비추는 간격이다.
카메라 기본 위치 : 캐릭터 우측 발을 바라본다.
실제 게임에서 카메라는 캐릭터를 좌측에 놓고 우측을 비운다.
벡터
위치벡터 + 위치벡터 : 그만큼 이동한 위치
위치 + (방향벡터(크기 1로 노멀라이즈한다.) * 거리) = 해당 방향으로 거리만큼 이동한 위치벡터
방향벡터 * 거리 : 결국 그만큼 이동한 위치와 같다.
대각 이동을 하면 x : 1, Y : 1을 하면 대각 1이 안나오는 이유
피타고라스
노멀라이즈 하는 이유 중 하나 : 대각 이동시 속도를 동일하게 맞추기 위해서이다.
A 위치벡터 - B 위치벡터 : B가 A를 바라보는 방향 벡터(벡터의 크기는 A와 B의 거리)
메테리얼 생성
콘텐츠 브라우서 - 우클릭 - 메테리얼 클릭 - 디테일에서 디폴트 값으로 베이스 컬러를 설정하고 실행 핀을 베이스 컬러에 연결한다.
메테리얼은 쉐이더에서 벡터가 float4이기 떄문에 RGBA로 조절한다.
메테리얼 클릭 - 우클릭 - VectorParameter 검색
베이스 컬러 : 보여질 색
액터 좌표 지정
이벤트 그래프 - BeginPlay - 우클릭 후 Set Actor Location 검색 - Get Actor Location(self) 검색 - 변수 +버튼 클릭 - 벡터 변수(Location) 생성 (기본값 0, 200, 0) - Get Actor Location과 Location 덧셈 ⇒ 벡터(내 위치) + 벡터(Location 기본값 0, 200, 0) : 내 위치에서 (0, 200, 0) 만큼 이동하여 렌더링된다.
자신의 위치를 구하는 함수 : Get Actor Location(self)
변수 팁
변수 생성 후 오른쪽에 눈 모양 아이콘을 클릭하여 눈을 뜨게하고 컴파일을 누르면 디테일 창에서 기본값을 입력할 수 있다.
카테고리 항목을 지정할 수 있어서 항목별로 변수를 모을 수 있다.
방향 벡터 구하기
벡터 변수와 Normalize를 검색하여 연결하면 벡터가 1로 변환된다.
Tolerance : 자신의 크기를 나눠서 1을 만들어야 하는데, 나눠야 하니까 0은 나오면 안되니 0일때 최솟값으로 Tolerance로 지정한 수를 넣어 나누라는 것이다.
액터 연속적으로 자동 이동시키기
틱 이벤트 - 액터 변수(나말고 다른 액터) 생성 - Get Actor Location 연결 : 함수에 연결된 액터 노드의 위치를 가져온다. - ⇒ 할당한 액터의 위치를 표시하는 기본 순서
Delta Seconds : 이전 프레임 - 현재 프레임 뺸 시간
사용 이유 : 컴퓨터가 빠르면 틱이 더 많이 검출되니까 그 시간 간격을 곱해서 보정하기 위해 검출한다.
액터 변수 타입 : 기본값을 못넣고 배치한 액터를 아웃 라이너에서 끌고 할당할 수 있다. (눈을 켜얗ㄴ다.)
틱 이벤트 - 액터 변수 생성 - Get Distance To - self 검색하고 셀프 레퍼런스 가져오기 클릭 ⇒ 다른 할당한 액터와 자신의 액터 사이의 거리를 반환하는 기본 순서다.
Get Distance To : 연결한 액터들의 거리를 반환하는 함수 노드다.
틱 이벤트 - Set Actor Loccation 검색 - 다른 액터 할당한 변수 놓기 - Get Actor Location 검색 후 연결 - Get Actor Location(self) 검색 - 다른 액터의 벡터와 셀프 벡터를 -연산을 한다.(셀프 액터가 다른 액터를 바라보는 방향이 나온다.) - Normalize 노드를 검색하고 연결한다. - Speed(float, 기본값 10.0f) 변수를 생성한다. - Speed와 틱 이벤트의 Delta Seconds를 곱한다. - 아까 계산한 방향 벡터와 Speed 보정값을 곱한다. - Get Actor Location(self)를 검색하여 방향과 Speed를 곱한 값과 더하고, Set Actor Location에 연결한다.
Get Actor Location(self) : 셀프 레퍼런스를 가져와서 연결하지 않아도 배치만 하면 셀프 레퍼런스가 가져와진다.
틱 이벤트의 Delta Seconds(보정값)를 곱하는 이유 : 프레임 별 스피드값의 차이가 나지 않도록 하기 위해서이다.
즉, 내위치 + (방향벡터 * Speed 보정값) = 내 위치에서 방향벡터가 가리키는 방향으로 Speed만큼 프레임 단위로 이동하게 된다.