언리얼에서 오브젝트가 추가 될때 호출 되는 함수는 PostInitProperties() 프로퍼티가 수정될때 호출되는 함수는 PostEditChangeProperties() 위 두함수는 AMyActor의 부모클래스인 AActor에서 상속 받은 함수이기때문에 부모클래스의 함수를 자식클래스에서 덮어쓴다는 의미로 virtual override 키워드를 함께 사용해줘야합니다. 컨트롤 + Dot(.)을 누를 시 cpp에 함수를 정의해줍니다. Super::PostInitProperties() Super 클래스는 클래스가 상속받은 부모 클래스에 있는 기본 프로퍼티나 함수를 가져오는데 사용되는 키워드입니다. 이런작업을 해주는 이유는 전에 부터 하는 작업을 다시하도록 만든것입니다. 함수 또한 블루프린터에서 볼 수 있도록 ..
UPROPERTY() 매크로 UPROPERTY() int32 IntVar; 이렇게 변수의 기본형으로 사용합니다. UPROPERTY 매크로의 역할은 프로퍼티가 있음을 알리고 연결되었을때 어떻게 동작할지 지정하기 위한 것입니다. 그리고 보통 short , int , long을 알고 있는데 이런 타입은 플랫폼마다 길이가 달라질 수 있기 때문에 언리얼엔진에서는 길이가 고정되있는 타입으로 int8, int16, int32, int64 int 뒤 숫자는 정수를 표현하는데 몇개의 비트를 사용할것인지를 의미합니다. int8 - 127 ~ -128, int16 - 32,767 ~ -32,768 int32 - 214,648,647 ~ -214,648,648 int64 - 9,223,372,036,854,775,807 ~ ..
입문 Unreal 4 강의를 따라 작성됐습니다. 클래스와 이름이름과 같은 이름을 가진 생성자 Awake This 객체가 생성될때 호출되는 함수이며 주로 생성된 액터의 변수의 기본값을 설정해주는데 사용됩니다. BeginPlay 함수 This 객체가 월드에 스폰되었을때 한번 실행되는 함수로 게임 플레이어 로직을 초기화하는데 사용 Tick 함수 매 프레임마다 호출되는 함수, Tick 함수에 DeltTime 매개 변수는 전에 호출된 이후로 얼마나 시간이 경과한 뒤에 다시 Tick가 호출되었는지에 대한 시간을 전달받을 수 있습니다. 주로 게임의 로직을 구현하는데 사용됩니다. 하지만 매 프레임마다 호출되는 Tick 함수가 불필요한 경우 지워 포퍼먼스를 상승시킬 수 있습니다. 방법은 헤더 파일과 소스 파일에서 Tic..
7강입니다 constructor 01 생성자와 소멸자에 대해 설명합니다. sturct 를 클래스로 변경했습니다. class로 변환 시 안에 모든 데이터 멤버들을 public으로 전환해줘야합니다. 이렇게 변환 시 바꾸기 전 sturct와 유사하게 변환됩니다. #include class KPeople { public: int age; // 데이터 멤버(date member) char name[12]; void PrintPeople() // 멤버 함수 (member function) { printf("%s : %i\r\n", name, age); } void SetAge(int age_) { age = age_; } void SetName(const char* name_) { strcpy_s(name, nam..
C++ 강좌를 보면서 배운걸 정리합니다. 유니티 포트폴리오로는 C++ 회사에 지원하기 힘든 것 같아 언리얼 엔진4을 만져보기 위해 공부하는 중입니다. 포트폴리오로 만들기 위해서 어떤 방향으로 해야할지는 C++ 공부 후 검토해볼 생각입니다. 참고 강좌 : C++ struct 강좌는 총 3강입니다. 사용할 구조체 형태입니다. struct People // type definition { int age; // member variable char name[10]; }/*a*/; People 부분은 태그네임이라고 합니다. struct People이라는 타입으로 정의된 동시에 a라는 변수로 정의된 상태입니다. 구조체는 타입도 정의할 뿐만 아니라 변수도 정의할 수 있는 특별한 구조를 가지고 있습니다. 그리고 구조체..
코딩 테스트 치고 나오면서 C++에 대한 기초가 부족한거같아서 C++을 한번 완전 기초부터 다시 해보려고 합니다. 그리고 테스트 준비하면서 공부한걸 다시 정리해서 올릴 생각입니다. 공부도 먼저 책으로 공부 한다고 포스팅은 공부를 다하고 정리하면서 적습니다. 너무 포스팅을 미뤘네요. C++ 기초전에 C 부분과 기초이론부분을 좀 더 공부하고 왔습니다. 계산적 사고 Computational Thinking 입력 - > 알고리즘 - > 출력 (와 같은 형식은 다 알고리즘이라고 할 수 있지만) 자신이 원하는 답을 도출해낼 수 있는 알고리즘을 만들어야합니다. 문제를 해결 할 수 있는 단계를 찾는 행위 컴퓨터의 작동원리 컴퓨터 (정보화기기) - 하드, 소프트 구성 요소(참고) 중앙 기억 장치 CPU 주 기억 장치 R..
While문 ~scanf가 가능해서 사용해봤습니다. A+B - 5 int a,b; while(~scanf("%d %d", &a,&b)){ if(a+b != 0) printf("%d\n", a+b); } A+B - 4 int a,b; while(~scanf("%d %d", &a,&b)){ printf("%d\n", a+b); } 더하기 사이클 int num, firNum, secNum, sumNum, count, result; result = 0; count = 0; scanf("%d",&num); if (num < 10) num *= 10; result = num; while (1) { firNum = result / 10; secNum = result % 10; sumNum = firNum + secN..
C++ 출력만 해보고 앞으로 C#으로 해보겠습니다. 유니티로 취업을 할거고 계속 사용해서 친해져야하는 언어이므로 앞으로 문제는 C#으로 풀어보겠습니다. 두 수 비교하기 using System; class Program { static void Main(){ string str; int a,b; str = Console.ReadLine(); string[] strArr = str.Split(' '); a = Convert.ToInt32(strArr[0]); b = Convert.ToInt32(strArr[1]); if(a < b) Console.WriteLine(""); else if(a == b) Console.WriteLine("=="); else Console.WriteLine("잘못된 입력 값입니다..
보스 부분은 아직 보완해야할 부분이 많아서 건너띄고 리팩토링 후 포스팅할 생각입니다. 그럼 그전에 셰이더 부분부터 보겠습니다. 계산을 하는 부분입니다. 앞전에 셰이더 튜토리얼에서 작성한 부분입니다. 기본 툰 셰이더는 텍스쳐로 값을 받아서 적용시켜야해서 기존 툰 셰이더보다 코드로 툰 셰이더를 작성해서 사용해보자라는 취지로 만들었습니다. 왼쪽이 기존 셰이더인 그림자를 적용 안한 모습입니다. 오른쪽은 어두운면엔 간접광인 엠비언트 라이트를 추가하고 그림자와 빛 사이 스무브 스텝(smoothstep) 함수를 사용하여 매끄럽게 블렌딩해줬습니다. 다음은 정반사(Specular reflection)와 림 라이트 (Rim lighting)을 만들어서 적용 시켰습니다. 정반사는 보는 방향인 즉, 카메라가 보는 방향을 따라..
팀프로젝트를 마무리 단계는 코드를 분석하여서 정리하기로 하였습니다. 전 플레이어 연출인 카메라 부분 및 낙하 판정을 하는 부분을 분석해보려고 합니다. 협업한 친구가 코드를 잘 정리하여 보내주었습니다. 굿 카메라가 벽에 닿을 시 처리하는 부분 /*초기 값 설정*/ private float defaultPosition; private float targetPosition; public Transform cameraTransform; defaultPosition = cameraTransform.localPosition.z; cameraTransform.localRotation = Quaternion.identity; cameraTransform.parent = pivotTransform; // TPS 카메라 ..