본문 바로가기

분류 전체보기648

언리얼엔진5 39장 [Impulse, Add Force] ▣ Create a Reference Cube가 나오기 위해서는 꼭 해당 엑터를 선택하고 오른쪽 마우스를 클릭해야 한다. ▣ Space Bar 이벤트 : 스페이스에 대한 이벤트 ▣ Pressed 키를 누르면 호출, Released 키를 누르면 떼면 호출 ▣ Add Impulse : 순간적인 힘으로 밀어낸다, 순간적으로 힘을 주기 때문에 계속 힘을 주더라도 힘을 축척하지 않는다. https://docs.unrealengine.com/4.26/en-US/BlueprintAPI/Pawn/Components/CharacterMovement/AddImpulse/ Add Impulse Add Impulse docs.unrealengine.com ▣ 좌표를 확인해서 어디로 올라갈지 지정 ▣ 플레이버튼을 클릭 후 스페.. 2023. 5. 22.
언리얼엔진5 38장 [Create a Reference] ▣ 오브젝트 : 데이터 및 기능들의 집합 ▣ 엑터 : 레벨에 있는 오브젝트를 의미 ▣ 큐브를 클릭하고 레벨블루프린트에서 오른쪽마우스를 클릭하면 클릭한 엑터에 레퍼런스 주소를 접근하여 생성 Create Reference to Cube가 목록에 나오게 된다. ▣ Reference : 주소(참조)를 의미 ▣ 파랑색원 : 데이터핀 ▣ Get Static mesh Component : Target에 있는 컴포넌트에 있는 값을 불러온다. ▣ Get Mass : 무게에 값을 받아온다. ▣ Print String : string에 값을 출력 ▣ 블루프린트 완성 시 컴파일버튼 클릭 후 저장을 한다. ▣ 플레이버튼을 클릭하면 Mass 값 출력 2023. 5. 19.
언리얼엔진5 37장 [물리, Physics, Gravity] https://docs.unrealengine.com/5.0/ko/physics-in-unreal-engine/ 피직스 콜리전을 계산하고 물리 액터를 시뮬레이션하는 서브시스템입니다. docs.unrealengine.com ▣ 수정할 엑터를 클릭 후 Details메뉴 -> Search메뉴에서 Physics 키워드를 선택하면 Physics에 대한 디테일 메뉴로 이동 ▣ Simulate Physics : 체크 시 물리 효과 적용 ▣ Enable Gravity : 체크 시 중력에 효과 적용 ▣ Mass(kg) : 체크 시 kg단위로 무게 적용 ▣ Enable Gravity : 해제 시 중력에 효과 비활성화 ▣ 플레이버튼을 클릭하면 큐브는 Enable Gravity가 체크가 되어 있기 때문에 충돌 후 땅에 떨어지.. 2023. 5. 19.
언리얼엔진5 36장 [뷰포트, 퀄리티설정] ▣ 오른쪽마우스 클릭 후 w키, s키, d키, a키를 누르면 뷰 시점을 자유롭게 조절하고 이동할 수 있습니다. ▣ 왼쪽마우스 클릭 후 w키, s키, d키, a키를 눌러 뷰 시점을 조절할 수 있지만 오른쪽마우스 클릭할 때와 다르게 위아래로 시점을 바꿀 수 없고 왼쪽마우스를 클릭한 상태에서 앞뒤 드래그를 하면 앞 뒤로 이동합니다. ▣ 오른쪽마우스나 왼쪽마우스를 클릭한 상태에서 q키나 e키를 누르면 위 아래로 이동합니다. ▣ Settings에서 Engine Scalablility Settings에 들어가면 언리얼엔진 뷰에 대한 퀄리티를 설정할 수 있습니다. 본인 컴퓨터 CPU, GPU 사양에 따라 설정해주시면 됩니다. 2023. 5. 17.
C++ 29 [스마트 포인터] https://learn.microsoft.com/ko-kr/cpp/cpp/smart-pointers-modern-cpp?view=msvc-170 스마트 포인터(최신 C++) 자세한 정보: 스마트 포인터(최신 C++) learn.microsoft.com ▣ 스마트포인터 : C++11 버전 이후부터 새로운 스마트포인터 제공 ▣ 스마트포인터 : 메모리 할당 시 따로 delete를 사용하지 않아도 메모리 자동해제 ▣ 스마트포인터 종류 ▣ unique_ptr : 하나의 객체에 하나의 포인터만 소유권을 가질 수 있는 스마트포인터 ▣ shared_ptr : 하나의 객체가 참조하는 스마트 포인터가 총 몇 개인지를 참조하는 스마트포인터 ▣ weak_ptr : shared_ptr 객체에 대한 접근은 가능하지만 메모리 소.. 2023. 5. 16.
C++ 28 [예외처리] https://learn.microsoft.com/ko-kr/cpp/cpp/exception-handling-in-visual-cpp?view=msvc-170 MSVC의 예외 처리 C++ 언어 참조 예외 처리 개요입니다. learn.microsoft.com ▣ 예외처리 : 예외 발생 시 대처하는 코드 ▣ try : 예외를 감지하고, main() 함수 전체를 포함할 수 있다. ▣ throw : 예외가 발행했을 때 예외 발생을 알리고 던지는 코드 ▣ catch : 예외를 받아 처리하는 블록 코드 ▣ catch (const char *s) : 문자열을 받아서 처리 가능 ▣ throw : 던지는 예외 값의 타입과 일치하는 catch() 블록 실행 ▣ try {} 블록에는 반드시 1개 이상의 catch() 블록이.. 2023. 5. 12.
유니티 - [2D 오브젝트 따라다니는 AI] ▣ 2D 스프라이트를 생성해 주세요. Square로 Player이름으로 , Circle를 Zombie로 생성합니다. ▣ Zombie 오브젝트에 ZombieManager라는 스크립트를 생성하고 코드처럼 작성합니다. ▣ Vector2.MoveTowards(자신에 위치, 타깃위치, 이동스피드 * 경과시간); ▣ 저장하고 시작버튼을 클릭하면 Zombie 오브젝트가 Player오브젝트 방향으로 이동합니다. https://assetstore.unity.com/top-assets/top-new?aid=1101lvILc 2023. 5. 9.
C++ 27 [파일입출력] ▣ 파일입출력 : ifstream : 파일입력(파일 읽기), ofstream : 파일출력(파일 쓰기), fstream : 입출력(파일 읽기, 쓰기) ▣ ofstream f("C:\\C++\\test.txt", ios::out); : ofstream 변수이름("파일경로 및 파일이름", 모드); ▣ ofstream f("C:\\C++\\test.txt"); : 매개변수에 모드를 넣지 않아도 ofstream이기 때문에 out으로 처리 ▣ f 2023. 5. 9.
C++ 26 [포맷플래그 입출력] ▣ 형식상태는 비트 형태로 표현되는 형식 플래그 값에 의해 그 의미가 지정 ▣ long setf(long n) : 형식 플래그를 인수로 받아서 이 플래그 값에 해당하는 비트의 필드를 세팅하는 함수 ▣ long unsetf(n) : setf() 함수와 반대의 기능을 수행하는 함수, 해당 비트를 끝내는 함수 ▣ long flags() : 현재 플래그의 상태를 반환하는 함수 ▣ long flags(long n) : 플래그를 인수 n의 비트 패턴으로 세팅시키고 변경되기 이전의 플래그 값으로 반환 ▣ ios::skipws : 입력 시 공백문자 무시한다. ▣ ios::left : 폭 안에 출력을 왼쪽 정렬 ▣ iost::right : 폭 안에 출력을 오른쪽 정렬 ▣ ios::scientific : 과학산술용 표기로.. 2023. 5. 3.
C++ 25 [람다 표현식] https://learn.microsoft.com/ko-kr/cpp/cpp/lambda-expressions-in-cpp?view=msvc-170 C++ 람다 식 자세한 정보: C++의 람다 식 learn.microsoft.com ▣ 람다 : c++11 표준부터 지원, 람다 표현식, 람다 함수, 이름 없는 함수 ▣ 람다 사용방법 : [캡쳐](매개변수){함수코드;};(호출인자); [](매개변수){함수코드}(호출인자); []{함수코드;}; []{함수코드;}; [](매개변수){함수코드;}; auto n = [](매개변수){함수코드;} ; auto n = [](매개변수) -> 반환형 {함수코드;}; ▣ (;) 세미콜론에 위치는 문장 끝, 함수 끝 부분에 넣어야 한다. 람다식도 동일하다. ▣ 캡처 : 람다 외부 .. 2023. 4. 28.
C++ 24 [STL, map] ▣ map : key와 value로 이루어져 저장하고 key를 이용해서 값을 검색하는 제네릭 컨테이너, 중복을 허용하지 않음 ▣ map을 사용 : #include ▣ map 객체 : map 객체이름 ▣ map 값 접근 : dic[key] ▣ insert() : map에 삽입, 단 key가 중복되면 삽입을 하지 않는다. ▣ erase(포인터) : 가리키는 포인터 원소 삭제 ▣ begin() : 첫 번째 map 주소 반환 ▣ end() : 마지막 map 다음 주소 반환 ▣ at() : map에 키 값에 값을 반환 ▣ find(key) : map에 key를 가리키는 iterator(포인터) 반환 ▣ d->first : 주소에 값 접근 ▣ empty() : map이 비어 있으면 true 반환 ▣ clear() .. 2023. 4. 26.
C++ 23 [STL, list] https://ko.wikipedia.org/wiki/%ED%91%9C%EC%A4%80_%ED%85%9C%ED%94%8C%EB%A6%BF_%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC 표준 템플릿 라이브러리 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 표준 템플릿 라이브러리(STL: Standard Template Library)는 C++을 위한 라이브러리로서 C++ 표준 라이브러리의 많은 부분에 영향을 끼쳤다. 이것은 알고리즘, 컨테이너, ko.wikipedia.org ▣ list : 이중 연결 리스트, 선형 구조를 가지는 시퀀스 컨테이너이며 노드 기반으로 데이터를 저장 요소들이 근접한 메모리에 저장되지 않는다. 배열과 다른 구조, 느린 검색.. 2023. 4. 26.
C++ 22 [STL, vector] https://ko.wikipedia.org/wiki/%ED%91%9C%EC%A4%80_%ED%85%9C%ED%94%8C%EB%A6%BF_%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC 표준 템플릿 라이브러리 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 표준 템플릿 라이브러리(STL: Standard Template Library)는 C++을 위한 라이브러리로서 C++ 표준 라이브러리의 많은 부분에 영향을 끼쳤다. 이것은 알고리즘, 컨테이너, ko.wikipedia.org ▣ STL : 표준 템플릿 라이브러리(Standard Template Library) ▣ STL 구성 컨테이너(템플릿 클래스) : vector, set, list, stack,.. 2023. 4. 25.
C++ 21 [템플릿] ▣ 데이터타입별로 반환형 매개변수를 다르게 하여 함수오버로딩 가능, 하지만 다른 데이터타입에 대한 걸 계속 만들어야 하기 때문에 가독성이 떨어진다. ▣ 템플릿 : 함수와 클래스가 제네릭형으로 동작할 수 있게 해주는 틀 ▣ 제네릭 : 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술 https://ko.wikipedia.org/wiki/%ED%85%9C%ED%94%8C%EB%A6%BF_(C%2B%2B) 템플릿 (C++) - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 템플릿(template)은 C++ 프로그래밍 언어의 한 기능으로, 함수와 클래스가 제네릭 형과 동작할 수 있게 도와준다. 함수나 클래스가 개별적으로 다시 작성하지 않고 ko.wiki.. 2023. 4. 21.
C++ 20 [추상클래스, 순수가상함수] ▣ 순수 가상 함수 : 함수에 코드(원형)는 없고 선언만 하는 가상함수 ▣ 추상 클래스 : 순수 가상 함수가 포함되어 있는 클래스 ▣ 순수 가상 함수가 선언되었기 때문에 자식 클래스에서 오버라이딩을 해야 한다, 그렇지 않으면 추상 클래스의 인스턴스(객체)를 생성할 수 없다. ▣ 추상 클래스의 목적 : 순수 가상 함수를 통해서 자식 클래스가 구현할 함수의 원형을 보여주는 인터페이스 역할 ▣ 추상 클래스로 함수에 선언부를 잡아놓고 자식클래스에서 그 목적에 맞게 다시 구현(정의)해서 사용하기 때문에 선언부와 구현부를 나누어서 사용 가능 2023. 4. 20.
C++ 19 [가상함수, 오버라이딩] ▣ Player 부모클래스, Soldier자식클래스 같은 hit() 함수 정의, 이걸 함수재정의, 함수오버로딩이라고 한다. ▣ 그럼 위에 주석처럼 Soldier자식클래스는 Player에 멤버를 상속받는다. ▣ Player player; Soldier soldier; Player* pplayer = new Player; Player* pSoldier = new Soldier; 코드를 통해서 객체를 포인터로 state() 함수에서 hit를 호출하게 되면 class Soldier : public Player 상속 int hit(int attack) { cout 2023. 4. 20.
C++ 18 [상속, 다중상속, 가상상속] ▣ 상속 : 부모클래스(기본클래스), 자식 클래스(파생클래스)에 관계를 의미 ▣ 클래스 간에 상속을 하는 이유 : 클래스 재활용 및 생산성, 관리에 용이하기 때문 ▣ 상속 방법 : class 자식클래스명 : public 부모클래스명 { }; ▣ 부모클래스에 public, private, protected 모두 사용 가능 ▣ 상속 횟수는 제한이 없고 상속받은 자식클래스는 부모의 모든 멤버를 접근 가능 ▣ protected 접근지정자는 상속받은 클래스는 접근이 가능 ▣ 자식클래스가 부모클래스를 상속할 때에도 생성자, 소멸자 모두 실행 ▣ 자식클래스를 객체로 사용할 때 부모클래스 생성자 호출 -> 자식클래스 생성자 호출 -> 자식클래스 소멸자 호출 -> 부모클래스 소멸자 호출, 이런 순으로 실행 ▣ 이러한 생.. 2023. 4. 19.
C++ 17 [연산자 오버로딩] ▣ 연산자 오버로딩 : 연산자 중첩, 연산자 의미를 확대해서 지정, 연산자 중복 ▣ string 객체를 사용해서 문자열 + 문자열로, (+) 연산자 오버로딩 ▣ 단항 연산자 : 예시) x++, ++x, y--, --y : 하나의 항이 존재하는 연산자 ▣ 이항 연산자 : 예시) x+y, x-y, x*y, x/y : 두 항이 존재하는 연산자 ▣ 자료 참고 https://namu.wiki/w/%EC%9D%B4%ED%95%AD%EC%97%B0%EC%82%B0 ▣ 전치(선처리): ++x , 연산 후 대입 ▣ 후치(후처리) : x++, 참조 후 연산, ▣ 둘 다 +1 연산, --x, x-- 도 가능 ▣ 선치 연산자오버로딩 함수 선언 방법 : Player Player::operator++() ▣ operator++ .. 2023. 4. 14.
C++ 16 [객체 반환] ▣ this : 자신에 객체 주소를 의미 ▣ *this : 포인터와 동일하게 자신에 객체 주소에 있는 값 ▣ return *this;으로 객체를 반환하게 되면 그 객체의 멤버변수들에 모든 값들이 반환된다. 2023. 4. 13.
C++ 15 [friend 함수, 클래스] ▣ 프렌드를 사용하는 이유 : 클래스, 함수, 멤버 간에 공유해야 할 상황이 있을 경우, 클래스의 private, protected 멤버를 접근해야 하는 특별한 경우 ▣ 프렌드 함수 선언 방법 : friend void gameStart(Player); : 접근할 함수 반환형 앞에 friend키워드를 붙인다. ▣ gameStart(Player) : 코드처럼 접근할 클래스를 매개변수로 지정해야 한다. ▣ void gameStart(Player p) : 함수를 정의할 때에도 매개변수를 접근할 클래스로 정해준다. ▣ 프렌드 클래스 선언방법 : friend class Player2, 접근 권한을 줄 클래스를 선언할 때 맨 앞에 friend 키워드를 붙이고 선언한다. ▣ 프렌드를 선언할 때 클래스에 public, .. 2023. 4. 13.
C++ 14 [유니폼 초기화] ▣ C++11 이번에는 타입의 초기화 방식이 일정하지 않았다. ▣ C++11부터 타입을 초기화할 때 유니폼 초기화(균일, 중괄호) 초기화를 따르도록 통일 ▣ C++ 11부터 {} 유니폼초기화를 이용해서 초기화 가능 ▣ n4{3}; : 대입연산자(=)를 생략가능하다. ▣ int n5{}; : 빈 중괄호로 초기화할 경우 0으로 초기화 ▣ 유니폼 초기화를 사용해서 구조체, 클래스 모두 초기화가 가능하고 초기화할 경우 생성자가 자동으로 호출 ▣ 동적메모리 할당을 하며 유니폼 초기화를 할 수 있다. 2023. 4. 12.