본문 바로가기

분류 전체보기638

10진, 2진수 바꾸기 ▣ 10진수를 2진수로 바꾸기 위해서는 나누기 연산을 진행해야 합니다. 위에 있는 방법처럼 2를 나누어 나눈 나머지와 나눈 값들을 하나하나 나열하여 작성합니다. 그리고 화살표 방향 순서대로 보면 그게 2진수입니다. ▣ 2진수를 10진수로 바꾸는 방법은 1,2,4,8,16,32,64,128,256,512... 이런 식으로 2에 몇 승에 값들을 2진수 위에 숫자를 나열하여 계산해야 합니다. 2진수 위에 2에 몇 승에 대한 값을 나열을 하고 0이 아닌 1인 부분에 값을 다 더하게 되면 10진수가 됩니다. 2023. 3. 21.
C++ 03 [클래스, 멤버변수, 멤버함수, 생성자, 소멸자, 접근지정자] ▣ 클래스 : 설계도, 틀 ▣ 객체 : 설계도로 생성된 완성품 ▣ 클래스 선언 : class 클래스이름 { }; , class 키워드를 앞에 붙여야 한다. ▣ 멤버변수 : 클래스내부에서 선언하는 변수 ▣ 멤버함수 : 반환형 클래스이름::멤버함수이름(매개변수){ } 순으로 생성한다. , (::)는 범위지정연산자 ▣ 접근지정자 : public: 클래스 내부, 외부 모두 접근이 가능한 접근지정자 ▣ 객체생성 : 클래스이름(자료형) 변수이름;으로 지정한다. 구조체를 생성하는 것과 동일하다. ▣ p1.Damage(50); 객체에 접근할 때에는. 점을 사용한다. ▣ 생성자 : 객체가 생성될 때 자동으로 한번 호출되는 함수, 생성자는 클래스 이름과 동일하게 작성해야 한다. 생성자는 리턴 타입 반환형을 선언하지 않는다.. 2023. 3. 10.
유니티 [2D 물리경계선수정, 타일맵 대각선경계선수정] ▣ 안녕하세요. 2D로 게임을 제작하면서 대각선으로 된 스프라이트 오브젝트에 콜라이더를 다룰 때 어려움이 있습니다. 그리고 물리경계가 대각선이다 보니 타일맵으로 맵을 그리고 콜라이더를 추가할 때에도 스프라이트 외부로 콜라이더 나와서 콜라이더 경계가 이미지를 벗어나서 불편함이 있습니다. 그럴 때 이렇게 하시면 됩니다. ▣ 먼저 수정할 스프라이트를 클릭하고 Sprite Editor 메뉴로 갑니다. 그리고 Sprite Editor를 Custom Phsics Shape로 클릭하여 선택합니다. ▣ 그리고 수정할 이미지를 클릭하고 Generate를 클릭하게 되면 물리경계선이 보이게 됩니다. ▣ 네모모양을 이동해서 경계선을 수정한 다음에 Apply를 해서 저장합니다. ▣ 그런 다음에 스프라이트를 씬에 옮겨서 Poly.. 2023. 3. 8.
C++ 02 [string, cin.getline(), width(), std::right, 정렬] ▣ : C언어 헤더는 c로 시작한다, C언어 string헤더 ▣ strcpy() : string을 복사하는 함수 ▣ : C++ string클래스 헤더파일 ▣ string : C++표준 라이브러리에서 제공하는 string클래스, 배열과 다르게 메모리 크기 제약이 없다., 쉽게 사용가능 ▣ getline() : 공백을 포함해서 입력받는 함수, getline(cin, 버퍼) ▣ cin.getline() : 공백을 포함한 지정한 문자까지 입력, getline(버퍼, 메모리크기, 입력받을 끝 문자) ▣ cin >> str >> str2 : 동시입력이 가능하다. ▣ cout.width() : 출력간격 ▣ std::right, std::left : 오른쪽정렬, 왼쪽정렬 2023. 3. 3.
C++ 01 [시작, 역사, 특징, 컴파일, 링킹, 디버깅, cout, cin, namespace] ▣ 소프트웨어 : 컴퓨터 프로그램과 데이터를 총칭하는 용어이다. ▣ 프로그래밍 : 컴퓨터가 처리할 작업 ▣ 프로그래밍 언어 : 컴퓨터 언어 https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D 컴퓨터 프로그래밍 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 컴퓨터 프로그래밍(영어: computer programming) 또는 간단히 프로그래밍(programming, 문화어: 프로그램 작성) 혹은 코딩(coding)은 하나 이상의 관련된 추상 알고리즘을 ko.wikipedia.org ▣ 1972년 C언어 ▣ 1983년 C++ ▣ 1995년 Java ▣ .. 2023. 2. 28.
언리얼엔진5 35장 [애니메이션] ▣ 안녕하세요. 이번장에서는 키를 누르면 이동하면서 애니메이션이 재생되는 과정을 공부해 보겠습니다. New State Machine, Get Velocity, Vector Length를 사용합니다. ▣ 먼저 Epic Games에서 Paragon: Reventant에셋을 다운로드합니다. ▣ 그리고 블루프린트폴더에서 Character 블루프린트를 생성하고 이름은 Player로 지정합니다. ▣ Game Mode Base도 생성합니다. 이름은 BP_GameMode로 지정합니다. ▣ World Settings에서 GameMode Oeverride와 Default Pawn Class를 지정합니다. ▣ Player에 들어가서 Mesh를 클릭합니다. 그리고 Detalis메뉴에 보면 Mesh라는 메뉴가 있습니다. Ske.. 2023. 2. 25.
언리얼엔진5 34장 [Default Land Movement Mode, Set Movement Mode] ▣ 안녕하세요. 이번장에서는 Default Land Movement Mode에 대해 공부해 보겠습니다. 저번장이랑 중복되는 부분이 있습니다. ▣ 먼저 저번장에서 만들었던 Player를 사용하겠습니다. Player는 캐릭터컨트롤러로 생성합니다. ▣ Player에 모양과 카메라위치도 지정합니다. ▣ Prjoect Settings에 Input에 Axis Mappings에 두 개를 생성합니다. W키, S키를 누를 때의 입력, A, D 키를 누를 때의 입력을 각각 생성합니다. ▣ Player에 Event Graph로 들어가서 위에 이미지처럼 코드를 완성합니다. Get Actor Forward Vector함수는 방향에 대한 함수입니다. Add Movement Input함수는 Character Movement를 사용.. 2023. 2. 23.
C++ [가상함수] ▣ 기본클래스, 파생클래스를 선언하고 각각 멤버함수를 선언합니다. 멤버함수의 이름은 동일하게 선언합니다. 그리고 메인함수에서 GameManager 객체의 포인터, Player 객체의 포인터를 각각 정의하고 위에 코드처럼 GameMaanger클래스의 주소로 접근하여 멤버함수를 호출하는 코드, Player클래스의 주소를 pGameManager 함수에 대입하여 멤버함수를 호출하는 코드를 작성합니다. ▣ 디버그를 해보면 둘 다 GameManager 클래스의 멤버함수가 호출되는 걸 확인할 수 있습니다. ▣ 그 이유는 정적바인딩으로 컴파일할 때 호출될 함수의 주소가 이미 결정해 버렸기 때문에 pGameManager = pPlayer; 이렇게 코드를 작성하더라도 부모의 함수가 호출됩니다. ▣ 이럴 때 가상함수(Vir.. 2023. 2. 22.
C++ [오버라이드] ▣ 먼저 GameManager 클래스를 선언하고 GameManager에 멤버변수, 함수를 지정합니다. Player라는 파생 클래스도 선언하고 멤버변수를 선언합니다. ▣ 그리고 Player의 객체를 p로 정의하고 p에서 Show() 멤버함수를 호출합니다. 그럼 기본클래스인 GameManager에 멤버함수 Show()가 호출됩니다. ▣ 코드를 추가해서 Player 파생클래스에 멤버함수로 기본클래스에 있던 멤버함수랑 동일한 이름으로 Show()라는 멤버함수를 선언합니다. 그리고 다시 p.show() 함수를 호출하면 위에 이미지처럼 기본클래스의 멤버함수가 아닌 파생클래스의 멤버함수가 호출됩니다. 이걸 오버라이드라고 합니다. ▣ 다시 정리하면 파생클래스가 기본클래스 함수를 대신 호출되는 걸 오버라이드라고 합니다. 2023. 2. 22.
언리얼엔진5 33장 [마우스 회전] ▣ 안녕하세요. 이번장에서는 마우스회전 블루프린트를 공부해 보겠습니다. ▣ 저번장에서 사용했던 Player를 사용하겠습니다. Player는 플레이어컨트롤러입니다. ▣ 먼저 Edit메뉴에 Project Settings를 클릭하고 ▣ Input 메뉴에서 Axis Mappings를 추가합니다. MoveMouseX, MoveMouseY라는 이름으로 두 개를 추가하고 각각 입력을 Mouse X, Mouse Y로 지정합니다. ▣ 그리고 Player Event Graph에서 위에 있는 이미지처럼 블루프린트를 완성합니다. 아까 만들었던 MouseX, MouseY Axis를 불러오고 Add Controller Input 회전함수를 가져옵니다. 여기서 중요한 건 왜 Pich와 Yaw를 사용하는지 잘 이해하기 어렵습니다. .. 2023. 2. 21.
언리얼엔진5 32장 [Jump] ▣ 안녕하세요. 이번장에서는 블루프린트를 이용해 점프를 하는 함수를 공부해 보겠습니다. ▣ 먼저 저번장에서 사용했던 Player를 사용하겠습니다. ▣ Edit메뉴에 Project Settings에 ▣ Engine메뉴에 Input로 들어가서 Action Mpaaings를 추가합니다. 이름은 Jump로 지정하고 키는 스페이스 키로 지정합니다. ▣ 그리고 Player에 Event Graph로 들어가서 Jump를 검색하면 Input에 Action Events가 있습니다. 클릭해서 생성합니다. ▣ 그리고 또다시 jump라고 검색을 하면 함수 중에 Jump라는 함수가 있습니다. 클릭해서 생성합니다. ▣ 노드를 연결하고 컴파일 저장 ▣ 씬에서 플레이버튼을 클릭하고 스페이스키를 누르면 점프가 되는 걸 확인할 수 있습니.. 2023. 2. 21.
언리얼엔진5 31장 [Set Actor Rotation, Add Actor Local Rotation, Add Controller Yas Input] ▣ 안녕하세요. 이번장에서는 Set Actor Rotation, Add Actor Local Rotation, Add Controller Yas Input 함수들을 사용하며 회전하는 노드를 공부해 보겠습니다. 회전하는 노드나 움직이는 노드 등 방법은 정해져 있지 않고 사용자의 사용 의도 따라 정합니다. ▣ 저번장에 만들었던 Player와 GameMode를 사용하겠습니다. ▣ Edit메뉴에서 Project Settings에 메뉴에 Input에 Axis Mappings를 추가합니다. MoveTurn이라는 이름으로 Q와 E키를 지정합니다. 키를 눌러 회전하는 걸 구현할 예정입니다. 다른 키로 지정하셔도 되고 Action Mappings를 추가하셔도 됩니다. ▣ Player에 Event Graph에서 노드를 완.. 2023. 2. 17.
C++ [클래스 상속] ▣ 파생클래스를 만들기 위해서는 class State : public Player class 파생클래스명 : 접근연산자 부모클래스이름 위에 있는 형식으로 작성해주시면 됩니다. ▣ state 객체에서 show() 함수를 호출하는데 show() 함수에는 Player에 level, hp 멤버변수를 사용할 수 있습니다. ▣ Player에 객체를 생성해서 p1. 접근을 하려고 하면 level 만 접근할 수 있습니다. ▣ public은 외부에서든 내부에서든 자식 클래스에서든 모두 접근이 가능합니다. private는 외부 접근이 불가능하고 내부 자기 자신에서만 접근이 가능합니다. protected는 외부에서는 접근이 불가능하지만 상속 관계만 접근이 가능합니다. 그렇기 때문에 public접근연산자인 level만 접근할.. 2023. 2. 16.
언리얼엔진5 30장 [캐릭터 이동, Add movement Input함수, Character Movement, Action Mappings, Delay함수] ▣ 안녕하세요. 이번장에서는 키를 누르면 캐릭터가 이동하는 노드, Add movement Input함수, Character Movement, Action Mappings, Delay함수에 대해 공부해 보겠습니다. ▣ 먼저 Content에서 Character과 Game Mode Base를 생성합니다. ▣ Character에 이름은 Player로 Game Mode Base에 이름은 B_GameMode로 지정합니다. ▣ Window 메뉴에 World Settings에 GameMode를 설정합니다. GameModeOverride는 아까 생성한 B_GameMode로 지정해 주시고 Default Pawn Class는 Player로 지정합니다. ▣ 그럼 Player를 씬에 옮기지 않더라도 기본 GameMode와 Pa.. 2023. 2. 16.
Visual Studio 컴파일 오류 해결방법 ▣ 윈도키를 클릭하고 cmd를 검색하면 명령 프롬프트가 나옵니다. 클릭해 주시고 ▣ 명령창에 tasklist를 입력하고 엔터키를 클릭합니다. ▣ 그럼 여러 리스티가 나올 텐데 우리가 작성하고 있는 Visual Studio에 프로젝트 이름을 확인합니다. 위에 이미지처럼 왼쪽 위에 보면 확인할 수 있습니다. 프로젝트 이름을 복사하고 다시 아까 명령프롬프트창에 돌아가 CTRL + F 키를 눌러 찾기를 하고 아까 복사했던 프로젝트 이름을 검색합니다. ▣ 그럼 프로젝트에 번호가 있는데 프로젝트 이름에 있는 번호를 복사하고 ▣ taskkill /f /PID 번호를 입력하고 엔터를 클릭하면 강제종료됩니다. 그리고 다시 프로젝트로 돌아가서 디버그를 하면 정상적으로 작동됩니다. 2023. 2. 15.
C++ [정적멤버변수, 정적멤버함수] ▣ 정적멤버를 생성하기 위해서는 멤버변수, 멤버함수에 데이터타입 앞에 static 키워드를 붙여주면 됩니다. 그럼 데이터영역에 저장되어 프로그램이 끝날 때까지 데이터가 남아 있고 외부에서도 접근이 가능합니다. ▣ int Player::count = 0; 정적변수를 초기화하는 코드입니다. 클래스명::멤버변수로 정적멤버변수를 접근해서 초기화할 수 있습니다. ▣ 정적멤버 함수 또한 Player::Sum(); 이런 식으로 호출할 수 있습니다. ▣ 그럼 Player p1;이라는 객체가 생성하기 전에 Sum() 정적멤버함수를 호출했기 때문에 정적멤버변수인 count가 +1이 되었고 또 p1.Sum()으로 호출했기 때문에 count = 1;인 상태에서 또 +1이 되었기 때문에 정적멤버변수인 count가 2가 출력됩니.. 2023. 2. 15.
C언어 [파일입출력] ▣ fopen() : 파일 열고 생성 fopen() 함수원형 : FILE*(반환형 FILE포인터) fopen(const char*name(위치 및 파일 이름), const char*mode(모드지정)); ▣ 모드 종류 r : 읽기 모드 w : 쓰기(파일이 존재하면 기존 내용이 삭제된다.) a : 추가(파일이 있으면 데이터가 끝에 추가된다.) r+ : 읽기와 쓰기 모드(파일이 존재해야 한다.) w+ : 읽기와 쓰기 모드(파일이 존재하면 새 데이터가 기존 데이터를 덮어쓴다.) a+ : 읽기와 추가 모드 (파일이 존재하면 데이터가 파일 끝에 추가된다. 읽기는 어떤 위치에서나 가능) ▣ fputc() : 한 글자를 파일에 쓰는 함수 fputc() 함수원형 : fputc('문자', FILE*) ▣ fclose(f.. 2023. 2. 15.
언리얼엔진5 29장 [폴더관리, 게임모드위치] ▣ 안녕하세요. 이번장에서는 폴더 생성 및 폴더 관리에 관한 간단한 부분 그리고 Game Mode설정에 대한 부분을 공부해 보겠습니다. ▣ 먼저 폴더를 생성해 보겠습니다. Content에서 오른쪽마우스를 클릭하면 메뉴가 나오는데 맨 위에 New Folder를 클릭하시면 폴더를 생성할 수 있습니다. ▣ 폴더를 클릭해서 오른쪽마우스를 클릭하고 Set Color를 클릭하면 폴더의 색을 바꿀 수 있습니다. ▣ 원하는 색을 지정하고 OK를 클릭합니다. ▣ 그럼 위에 이미지처럼 폴더의 색을 바꿀 수 있습니다. ▣ Content에 바탕을 클릭한 상태로 CTRL키를 누른 상태로 마우스를 휠을 돌리면 폴더의 크기를 조절할 수 있습니다. ▣ Content를 클릭하고 마우스오른쪽버튼을 클릭하고 Show in Explorer.. 2023. 2. 15.
언리얼엔진5 28장 [Material] ▣ 안녕하세요. 이번장에서는 Material에 간단한 기능을 공부해 보겠습니다. ▣ 먼저 Place Actors에서 Cube 하나를 생성합니다. 그리고 Cube를 클릭한 다음 오른쪽 Details 메뉴에 보면 Static Mesh과 Materials메뉴가 있습니다. Static Mesh는 모양을 만들고 Materials는 색을 칠한다라고 생각하시면 됩니다. Materials에 원 모양을 더블클릭합니다. ▣ 그럼 이런 창이 나오는데 여기서 색에 대한 노드를 지정할 수 있습니다. ▣ Color블록에 네모모양을 더블클릭하면 이런 창이 나오는데 여기서 원하는 색을 선택해 주시고 컴파일 저장을 합니다. ▣ 씬에서 Cube를 확인하면 색이 바뀌었습니다. ▣ 이번에는 따로 Material을 생성하겠습니다. 폴더에서 .. 2023. 2. 14.
언리얼엔진5 27장 [매크로] ▣ 안녕하세요. 이번장에서는 매크로를 공부해 보겠습니다. 매크로는 함수와 비슷합니다. 그리고 조금 다릅니다. 이 차이를 보기 위해 노드를 연결하며 공부해 보겠습니다. ▣ 먼저 저번장에서 공부했던 Axis로 입력하는 함수를 통해서 진행했던 노드에서 branch가 아닌 Compare Float 매크로블록으로 변경했습니다. 블록에 M이라고 적혀 있으면 매크로이고 F라고 되어 있으면 function 함수입니다. ▣ 컴파일 저장 후 씬에서 플레이 버튼을 클릭하고 위, 아래 키를 누르면 위에 이미지처럼 출력이 잘 되는 걸 확인할 수 있습니다. ▣ 이번에는 매크로를 직접 만들어서 사용해 보겠습니다. 왼쪽메뉴에 보면 MACROS라는 메뉴가 있습니다. 더하기 버튼을 클릭하면 생성이 됩니다. 함수와 동일합니다. ▣ 매크로.. 2023. 2. 14.
C++ [인수 객체, 인수 포인터, 인수 레퍼런스] ▣ 클래스 생성, 멤버변수, 멤버함수 생성 ▣ Play함수에 Player클래스의 객체 인수를 받는다. ▣ 인수로 받아오게 되면 바로 해당 인수의 객체를 사용할 수 있다. ▣ 다른 함수에서도 객체를 받아오면 그 해당 객체의 멤버 함수 호출 가능 ▣ 레퍼런스 인수로 받아와서 호출가능 주소를 받아오기 때문에 원본 수정 가능 ▣ 포인터로 인수를 받아 올 수 있다. ▣ 단 & 주소로 받아와야 하고 포인터로 받아온 객체는 -> 화살표로 접근해야 한다. 2023. 2. 10.