Adventure of 빠타박스
article thumbnail
728x90
728x90
SMALL

Unreal Engine 4 /4.26버전으로 수업을 진행합니다. 해당 내용은 수업에 대한 내용과 함께 

개인적인 생각 및 정보를 토대로 글을 씀을 알립니다. 

본 내용에 대하여 상업적으로 이용 및 배포를 금합니다.

이전내용) https://ppatabox.tistory.com/73

 

 

각주참고[각주:1] : 이동값을 계속 가산해준다.

World Direction(이동할 방향)

Scale Value : 스케일 밸류가 World Direction 에 곱해지는 값이다. 

 

 

지금 이처럼 연결해주면 

Axis Value 를 Sclae Value에 넣어주면 아무것도 지금 World Direction에 들어가지 않았으니까

지금 이동할 수 없을 것이다.. 

 

곱해지면 그냥 0 이니까. 

- : 뒷방향

+ : 자기 방향 

 

지금 전방이동이니까

 

1을 넣어주고 

(이러면 전방벡터) 

그러고 나서 메인창에서 플레이해보면 

 

이동하는 것을 볼 수 있는데 지금 시각적으로 

잘 안보이니까 바닥면을 좀 격자로 표시하기 위해 설정을 좀 하자 

 

우리가 콘텐츠 브라우저에서 불러와줬던 

엔진 콘텐츠가 있다. 

 

이게 안보이면 하단 뷰 옵션에서 체크 해주면 된다. 

 

엔진콘텐츠-> Engine Materials 폴더 -> Default Diffuse_TC Masks -> Ctrl + W 복사 -> 콘텐츠 창에 이동 

 

 

가져온 파일을 그대로 바닥면에 끌어서 옮겨놓자

끌어다 넣으면 아래 같이 매터리얼이 하나 생기는데 

 

이게 텍스쳐 샘플러 이다. (DX에서)

이걸 클릭해서 들어가자 

 

 

 

 

미리보기 창에서 아래 평면을 누르자

 

그러면 풀고 좀기다리면 이렇게 4칸이 나온다. 

칸이 너무 커서 좀 줄일 것이다. 

 

UV가 1이 넘어가면 설정에 따라 반복을 할지 무엇을 할지 했었는데

언리얼에서는 1이 넘어가면 기본적으로 반복이다. 

 

그래서 UV값을 가져와서 1이상을 곱하면 UV가 1이상의 값을 가지게 되니까. 

TextureCoordinate[각주:2]라고 있다 .

 

 

 

지금 이게 0~1까지의 값인데 

지금 연결해봐야 그냥 똑같은 값이 나온다 

 

여기에 

일단 끊어주고 

 

ScalarParameter

 

이름을 UV로 바꿔주자 (곱해질 값이다)

좌측에 Default Value를 16으로 하면 

아까 1일때 2칸이 나뉘었으니까. 

 

16이면 32칸이 나뉠 것이다. 

 

곱하기 * 하면  Multiply나온다

2개 값을 곱해주는 것 

 

이렇게 곱해주면 미리보기에 32칸으로 쪼개졌을 것이다. 위에서 적용해주고 

다시 메인창으로 가서 보면 (안됬으면 메터리얼 뷰포트 창에 옮겨서 적용시켜주자) 

 

 

 

출력로그에 쉐이더 적용시키면서 컴파일 되고 있는걸 볼 수 있다. 

 

그렇게 하고 플레이 해보면

 

 

앞뒤로 움직이는게 확실히 보인다. .

 

 

이제 좌우도 움직여야 한다. 

다시 BP_Player 로 가서 

이번에 당연히 

MoveRight(축이벤트) 를 불러와 주고 

Add Movement Input그대로 가져와서 

 

연결 

좌우니까 Y 를 1로 해주면 

 

메인창으로 나가서 플레이 해보면 

 

 

 

좌 우 로 잘 움직이는 것을 볼 수 있다. 

그런데 화면의 전방 화면의 오른쪽 으로 움직인다.

 

그러면 카메라를 마우스로 움직이는 세팅이 좀 필요한다. 

마우스가 안움직이면 0 움직이면 1값을 얻게 될 것이다.

 

세팅-> 프로젝트 세팅 -> 입력 

축매핑 추가 

 

Horizental Look 

수평으로 움직일때 카메라가 이동할 것 

마우스의 좌우 

마우스-> X축 

오른쪽 + 

왼쪽 -

 

축매핑 하나더 추가해서 Vertical Look 추가 마우스 Y -1 

 

[마우스의 Y는 올라갈수록 마이너스가 되야한다. 

마우스를 올리면 고개를 숙이는데 

마우스를 올려서 플러스 되는 방향으로 올리면 고개를 드는게 되는데 

(시계 방향으로 회전하기 때문)

마우스를 들면 고개를 숙이기 때문에 

이것의 방향을 뒤집어 줘야 한다 

그래서 Scale이 - 1 인것 ]

 

아까 처럼 어떻게 값이 들어오는지 확인 할려면 

 

BP_Player에서 Horizental Look(축이벤트)을  불러오고 

print String 해서 하면 된다. 

마우스를 좌우 로 움직이면 값이 나오는 걸 볼 수 있다. 

 

 

 

 

 

저기서 위 아래는 스케일 값을 마이너스를 주었었는데

게임 옵션에서 제공해주는 값이 - +를  바꾼다. 

예를들어 게임에서 수직반전 체크하는 옵션에서

그걸 체크하면 반대로 뒤집히는데

 

그게 

 

단지 여기서 -1곱해서 뒤집어 주는 것 일 뿐이다.

.

 

이제 좌우로 회전해야 하는건데.

Z회전을 Yaw라고 부른다. 

 

출처 : https://happy8earth.tistory.com/492

 

이걸 보면 더 쉬울려나 .

 

Z = Yaw

X = Roll 

Y = Pitch

 

그래서 회전할때는 

위에서는 AddMovement였는데

 

이번에는 Add Controller

 

지금은 Yaw회전이니까. 

yaw Input 

 

Add Controller Yaw Input[각주:3]: 컨트롤러가 로컬 플레이어 컨트롤 일때

 

 

 

만약에 마우스 속도를 빠르게 하고 싶다면 

입력핀(초록색) 사이에 곱해주면 된다. (카메라는 곱해주면 됨) 

 

위에서 이동키는 이동속도를 빠르게 하고 싶다고 똑같이 곱하는 것은 아니다. 

이것들은 따로 처리해야 한다. 

 

 

그다음에 Vertical Look 이것은 Pitch회전이니까. 

 

[ Controller라는 용어가 나오면 카메라랑 관련이 있다고 생각하면된다 ]

 

저장 하고 플레이 해보자 

그러면 좌우는 움직이는데 위아래로는 안 움직인다. 

이럴때는 

 

BP_Player로 가서. 

 

 

SpringArm이 현재 상하 회전을 막아두었다. 

컴포넌트에서 SpringArm클릭후 우측에서 

Camera Settings에서 Use Pawn Control Rotation이 있다. 이걸 체크 해주자 

(이게 소속되어있는 회전을 가져온다) 

 

 

상하 좌우 로 잘 회전하는데

문제는 지금 W키를 회전하고 돌리면 자기의 전방으로 가질 않고 있다. 

즉 지금 축이 바뀌고 있다는 것인데. 

 

카메라가 바라보는 전방으로 가야하는데 

다음시간에 해결할 것이다. 

 

 

 

 

 

자 이제 전방으로 이동을 할 것이다.

 

전방이란 것을 잘 생각해 보자 

캐릭터의 회전값에 필요한 값은 위아래가 아니라 

좌우로 생각하는데 

 

 

BP_Player에서 이벤트그래프 

GetActorRotation생성 

 

이것들이 다 구조체 이다. 

그러면 오른쪽 클릭하면 

구조체 핀분할이라고 나온다 .

이런식으로 클릭하게 되면 나온다.

이중에 우리가 필요한 것은 Z값 하나이다. 

(Yaw) 

 

이것만 가지고 Rotation을 다시만들 것이다. 

구조체는 전부 Make들이 있다

 

변수는(Make Literal) 

 

Make Rotator 를 생성해주자 

우린 이중에 Z값만 사용할 것이다. 

 

 

이렇게 회전한데에서 전방으로 이동할 것이기에 

전방값

Get Forward Vector

 

 

 

이것은 어차피 크기가 1이 나온다. 

방향벡터 (노멀라이즈 해서 리턴 해준다) 

 

그럼 이제 우리가 이동할 방향이 이것이 된 것이다. 

 

 

 

MoveForward에서 연결 해준 것 

 

그러면 MoveRight는 

 

 

GetRightVector

 

이 방향으로 이동할 것이기에 연결 

 

메인창에서 이제 마우스를 회전해도 전방 W입력이 정상적으로 먹히는 걸 볼 수 있다. 

원하는대로 잘 된다. 

 

 

 

 

 


 

 

다음시간) 

 

[Unreal Engine] 블루 프린트_애니메이션 이동| BluePrint_ Animation_Movement

Unreal Engine 4 /4.26버전으로 수업을 진행합니다. 해당 내용은 수업에 대한 내용과 함께 개인적인 생각 및 정보를 토대로 글을 씀을 알립니다. 본 내용에 대하여 상업적으로 이용 및 배포를 금합니

ppatabox.tistory.com

 

 

 

 

 

 

 

 


각주)

  1. [/footnote]

     


     

     

     

     

     

    이제 이동을 해봐야 하지 않을까?

    키보드나 마우스 입력을 받으면 이동을 해야하니까. 

    입력을 받아야하니까.

     

     

    메인창에서 

    세팅-> 프로젝트 세팅 -> 입력

     

     

     

    엔진-입력이라고 뜬다 

    이곳에 

    액션 매핑과 축 매핑이 있다..

     

    액션매핑 : 우리가 한번 눌렀을때 (점프 , 공격)

    축매핑: 연속적으로 값이 들어올때 ( 아무것도 입력 안될때 + 입력될때 - 값 (이동이나, 점프나 ) ) 

     

    매핑될 이름이다 이 이름으로 나타난다.

     

    전방이동 키보드에서 W 

     

     

    그리고 여기서 Scale이 이 W를 눌렀을때 들어오는 값이다. 

     

     

    S 도 입력해주자 추가(하위값) (축 매핑 추가아님) 

     

    S 뒤로가기 -1 을 줘야 겠지?

     

    축매핑에 + 

    이렇게 추가 해주자 

     

     

     

    이제 축을 만들었으니까. 

    BP_Player에 이벤트 그래프로 가자 

     

     

    아까 설정해둔것을 불러들여오자

     

    MoveForWard 축 이벤트로 

    이곳에 한번 밸류값을 출력해보자 

     

    Print String을 만들어줘서 한번 불러보자 

    이곳에서는 키입력은 특별한 경우 제외하고 

    지금은 플레이어에만 들어오는 값이 라고 보면 된다. 

     

    컴파일 하고 

    메인창가서 뷰포트 화면에서 플레이 해보자 

     

     

     

    매프레임 마다 실행이 되는데 

    이곳에서 본인이 직접 W 키나 S키를 누르면 그 값이 실시간으로 바뀌는 것을 볼 수 있다. 

     

     

    다시 BP_Player로 가서 

    기존 Print String지우고 

     

    이동에는 

    Add Movement Input[footnote]Add Movement Input : 이동값을 계속 가산해준다. [본문으로]

  2. TextureCoordinate :  UV값을 가져다 주는 것 [본문으로]
  3. Add Controller Yaw Input : 컨트롤러가 로컬 플레이어 컨트롤 일때 (입력컨트롤) [본문으로]
728x90
728x90
LIST
profile

Adventure of 빠타박스

@PPATABOX

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!