레벨 물체 추가, 제거, 조작 등등
(레벨은 유니티로 치면 Game Scene같은거임)
블루프린트 비주얼 스크립팅 언어 사용방법,
Mesh, Material -> 조합 -> 사용
프젝 만드는 방법부터 시작함 -> 유니티랑 비슷해서 쉽게쉽게 넘어감.
프젝만들어서 보면은 UE에디터 유니티 에디터와 비슷? 한거같다.
콘텐츠 브라우저,
뷰 포트 (유니티로 치면 GameScene)
월드 아웃라이너
유니티로 치면 오브젝트 클릭할 때 옆에 뜨는 정보? 칸 같은 부분
디테일 패널과 월드 셋팅
툴바
이런식으로 UE의 에디터 창이 구성되어있음.
UE에서 레벨에 배치될 수 있는 모든 물체를 Actor라고 한다.
(모든 Object가 Actor를 상속받는다)
UE4에서 블루프린트라는 단어는 두가지 의미로 사용됨.
하나는 UE4의 비주얼 스크립팅 언어 도는 애셋의 특정 타입.
하나는 블루프린트 클래스 또는 블루프린트 애셋을 의미함.
(무슨 차이임?)
Actor는 레벨(Scene)에 배치 될 수 있는 Object임.
이 Object는 C++ 클래스의 Instance이거나 블루프린트 클래스의 Instance가 될 수 있음.
이 두경우 (c++클래스의 객체이거나 블루프린트 클래스의 객체인 경우) 모두 직간접적으로 Actor클래스를 상속해야한다.
p56~57
블루프린트 클래스는 C++ 클래스나 다른 블루프린트 클래스를 상속할 수 있다는 점을 명심.
C++ 클래스에서 -> 코딩해서 로직 짠다음에 -> 블루프린트 클래스가 이 C++클래스를 상속할 수 있음.
상속한 뒤 C++ 클래스의 속성 및 메서드 사용가능함.
프젝창에서 블루프린트 클래스 만들고 열면은 블루프린트 에디터 뜸.
이는 UE Engine의 하위 에디터임.
블루프린트 비주얼 스크립팅 코드의 작성, 변수 및 함수 생성, 부모 클래스에서 정의된 다른 변수 및 함수에 접근할 수 있는 기능 제공함.
이딴식으로
흰색화살표가 "실행 핀"임
"변수 핀" 도있음.
이런식으로
(일단 닥치고 혼자 이리저리 많이 만져봐야하는듯?)
블루프린트에서 함수와 이벤트는 상당히 비슷함.
이벤트는 출력핀만을 가진다는 점이 유일한 차이점이다.
일반적으로 이벤트느느 블루프린트 클래스 외부에서 호출 된다.
UE4에서 BeginPlay, Tick이 가장 중요한 이벤트임.
BeginPlay이벤트는 이 블루프린트 클래스의 인스턴스가 레벨에 배치되고 레벨이 플레이되기 시작할 때 또는 인스턴스가 게임이 플레이 되는 동안 동적으로 생성될 때 호출됨
BeginPlay이벤트를 이 블루프린트 인스턴스에서 처음 호출되는 이벤트라고 생각할 수 있기 때문에 초기화에 사용할 수 있다. (유니티의 Start() 함수랑 비슷한가..??)
Tick이벤트는 프레임 말하는거임 FPS가 60fps라면은 Tick이벤트는 1초에 60번 호출되는 것임.
Mesh : 정점, 에지, 면 으로 구성됨
정점좌표들을 GPU에게 다 던져버려서 연산을 하겠지...
static Mesh, Skeltal Mesh
static은 큐브 원 이런거고 Skeletal은 사람 모양에서 사용하는 Mesh임 -> 애니매이션
Material
Mesh를 어떻게 표현을 할지 지정하는 부분.
질감이나 뭐 그런부분?-- BaseColor : Material 색상 결정하는 부분
-- Metalic : 금속성 나타냄
-- Specular : 얼마나 많은 양의 빛을 반사하는지
-- Roughness : 표면에 반사되는 빛을 얼마나 산란 시킬지
C++ 로 UE4프로젝트 만들면 .sln 솔루션 파일 생성됨 ->
들어가보면
이딴식으로 되어있는데
Engine 프로젝트는 UE engine이 사용하는 Thrid Party 플러그인을 모두 포함한다.
(현재 프젝에 있는 코든 소스 코드를 "소스"라 한다)
config 폴더 : 프로젝트 및 빌드를 위해 설정된 모든 구성을 포함함.
Plugins 폴더 : 플러그인 관련
Source 폴더 : C++ 작업할 때 주로 사용할 폴더임
Target 및 Build파일
프로젝트 이름 코드 파일
뭐뭐 등등 있음.
외부 파일 import할 때 리타기팅 옵션 체크 안되어있어서 팔 떨어져 나가는 부분 p108
게임 Manager같은 존재.
게임 시작하고 정지 시키고 온라인 게임이라면은 사람들 대기 시켯다가 입장시키고
p111에 GameMode에서 제공해주는 여러가지 기본 함수들이 있다.
가장 기본적인 Actor클래스임.
Default Pawn
관람자 Pawn
게임 관람하는 기능 제공함.
Player Controller
폰의 영혼임. 하나만 존재 가능.
Skeletal Mesh의 애니매이션을 제어할 수 있는 기능 제공하는 블루프린트의 한 종류
빈프젝만들기,
여기서 처음으로 C++ 클래스 만들어서 코드 친다음에 카메라설정 하고 캐릭터 움직임은 블루프린트 클래스 만들어서
Mesh는 책에서 제공하는 Mesh(이상한 아제 Mesh)덮어 쓴다음에
움직일 수 있게 만들어서 빈프젝에다가 구현을 했었음..
Character클래스는 Pawn클래스를 상속받음. (자손임)
p156
Action Mapping은 점프, 대시, 뛰기와 같이 단일 키 입력 동작(액션)인 반면,
Axis Mapping은 사용자의 키 입력을 기반으로 할당된 float값을 반환함.(시발 무슨말??)
사용자의 입력에 대해서 자세히 살펴봄 (모바일 포함)
플레이어 입력이 UE에서 어떻게 동작하는지, 엔진이 이벤트를 어떻게 처리하는지.
최근에는 키 눌림 처리를 Action 및 Axes로 추상화하고, 여기에 이름을 부여(Jump)해서 다른 플레이어 입력과 연결할 수 있다.
액션은 이진 입력 (키보드의 키와 같이 키를 누르거나 해제할 수 있는 입력)에 사용되는 반면
축은 스칼라 또는 연속입력(X축과 Y축 모두에서 -1에서 1사이의 값을 갖는 썸스틱과 같이 일정범위를 가질 수 있음)에 사용된다는 점이
Action 과 Axes의 차이점이다.
게임 패드로 자동차 게임 구현할 때 패드를 끝까지 당기면 당길 수록 가속도 붙음 => 축 입력 사용
반면 일시정지 같은 버튼은 Action 입력사용 (한번 누르고 동작해야 하니까)
새 프로젝트 -> C++로 설정 -> 프로젝트 설정 -> 입력 -> Action, Axes 입력 부분 설정해줌 ->새 C++ 클래스 만듦 -> 이전에 작업하던 카메라, 이동관련 코드 다 적어준다. -> 프로젝트로 돌아와서 컴파일 후 -> 프로젝트에서 안드로이드 모바일로 실행 -> 결과 확인.
굿굿.
이걸로 Action/Axes Mapping 완료함.
이까지 여러 간단한 빈 프로젝트 만들어보면서 기초 적인 부분 살펴봄.