분류 전체보기 33

C++ 개인 필기(8) 객체지향 생성자

Player p=p1 -> 복사 생성자, const Player& p / 복사와 생성이 한번에 이루어짐 Player p2 -> 기본 생성자 p2=p1 -> 기본 생성자 *인자즐 한개만 받는 기타 생성자를 타입 변환 생성자라고도 한다. float f=(float)num -> 명시적 형변환 float f = num ->암시적 형변환 Player p; / Player(int id) p=1 -> 타입 변환 생성자로 인해 가능하다. (암시적 형변환) -> 암시적 부분은 오류 발생 가능 객체지향 (OOP , Object Orited Programming) -상속성 -은닉성 -다형성 -- 3대 속성-- 상속: Warrior : public Player Player 멤버 변수 -> id 4바이트 Warrior 멤버 변..

c++ 2024.01.31

언리얼엔진5 C++로 정복하기(4) 캐릭터 클래스 및 애니메이션

캐릭터 클래스 생성 및 이동 애니메이션을 간략하게 정리해보자 우선 캐릭터 클래스로 c++ 파일을 생성해준다. 생성한 c++클래스를 블루프린트로 파생시켜준다! cpp 에서 생성자에 컴포넌트를 붙여준다. ( 폰에서 했던것봐 비슷하다) 그럼 다음 블루프린트에서 메쉬선택과 설정 조절을 잘해주자 다음으로 키바인딩을 해준다. 코드로 이동하는 부분 코드를 짜줍시다! 마지막으로 우리가 키가 반응하게 코드도 짜줍니다. 키 설정을 한 후에 애니메이션을 만들어줘야하는데 블레드 스페이스 애니메이션을 짜줍니다. 그런 다음 블레드 스페이스 애니메이션 전환에 필요한 angle 값과 speed 값을 블루 프린트 or c++ 에서 값을 구해줍니다. 캐릭터의 벨로서티 값을 불러오면 됩니다. 구한 값을 블렌드 스페이스 매개변수로 넣어주면..

언리얼 엔진 5 2024.01.30

C++ 개인 필기(7) 생성자 소멸자

멤버 변수 표기법(필수 아님) 예) UStaticmeshcomponent m_staticmesh this-> 사용 언리얼엔진5에서도 자기 자신을 가리킬때 특히 키 바인딩의 경우 BindAxis(FName("바인드이름"),this 시작을 알리는 특별한 함수 , 반환 타입이 없음, 오버로딩 가능 언리얼엔진에서는 기본생성자가 기본적으로 코드 생성시 생성됨. 생성자에 초기화를 할경우 에디터 상에서 게임이 실행되기전에 생성자가 실행됨. 소멸자(destructor) ->끝을 알리는 특별한 함수 소멸자는 오직 한개만 존제. (1) 기본 생성자 (인자가 없음) 예 ACHARACTER :: ACHARACTER() 일반 생성자 (2) 복사 생성자 : 자기자신의 참조값을 인자로 받음 예) speed=character.spe..

c++ 2024.01.26

C++ 개인 필기(6) 다중 포인터 및 배열

HelloWorld(const char* a) , const char* msg="Hello" { a="BYE"} 왜 수정이 안될까? -> 다중포인터 사용하면 가능하다. **PP -> PP[주소1] -> 8바이트 , 주소1[주소2] -> 주소2[] -> 1바이트 가방(const char) const char **pp=&a -> pp[&a], a[주소] -> 주소2[수정] -> *pp=BYE 이런식으로 수정 가능. 배열 -> 데이터의 묶음 포인터 -> 주소를 담는 가방 배열의 이름은 배열의 시작주소값을 가리키는 TYPE*포인터로 변환가능 [TYPE형 1차원 배열]과 [TYPE형 * 포인트]는 완전히 호환가능 int arr[2][2]={(1,2),(3,4)} int **pp=arr -> 에러 만약 int **..

c++ 2024.01.25

C++ 개인 필기(5) 포인터 및 참조

포인터 * 참조 & 성능은 같다. 편의성 : 참조>포인터 포인터를 주소를 넘긴다는게 티가 나지만 참조는 아니다. CONST를 사용해서 수정을 안한다는것 꼭 표기 (참조에서) , 읽기 전용일 때 포인터의 CONST는 const int* ptr -> ptr이 가리키고 있는 가방의 내용물을 바꾸지 못함 int* const info -> 주소값을 고치지못함 (주소값 고정) 참조 -> 별칭 -> 참조하는 대상이 없으면 초기화안됨 참조 사용시 -> define OUT -> func(OUT int& ref) 포인터로 사용하던걸 참조로 넘길려면? -> ByRef(*ptr) 참조를 포인터로 -> BYPTR(&REF) 배열 비주얼 스튜디오 기준 -> 배열은 상수여야한다. gcc는 아니다. 배열의 이름은 배열의 시작주소(시..

c++ 2024.01.24

언리얼엔진5 C++로 정복하기(3) 폰 생성 및 이동

이번 글에서는 간략하게 폰 생성과 이동에 대해 글을 써보겠습니다. 폰클래스로 c++ 파일을 생성해줍시다. 그 다음 c++파일을 블루프인트 파생클래스로 만들어 줍시다. 블루프린트에 스켈레톤 컴포넌트, 캡슐 컴포넌트, 스프링암, 카메라를 생성하기위해 c++로 해당 코드를 짜줍시다. 컴파일을 하고나면 블루프린트에 생성된것을 볼 수 있고 폰의 이동을 위해 FloatingPawnMovement를 추가 게임 시작시 만든 폰으로 게임을 시작하기 위해 게임모드 생성후 디폴트 폰 클래스 변경 키 바인딩을 위해 프로젝트 세팅 -> 입력에 해당 바인딩을 해줍시다. 다시 c++로 와서 해당 코드를 짜주면 마우스 x 축은 좌.우 화면 전환 마우스 y는 상 하 방향전환 w, s 키는 앞뒤로 이동하며 forwardvector를 사..

언리얼 엔진 5 2024.01.23

C++ 개인 필기(4) 포인터

포인터 int n=1; -> 스택 메모리에 있는 특정 주소에 우리가 원하는 값을 넣은 코드, 메모리에 이름을 붙인 것 포인터 -> 주소를 저장하는 가방 -> 4바이트(32비트) or 8바이트(64비트) 고정ㅇ크기 int a= *pt; -> 주소를 저장하는 가방이 가리키는 주소로 가서 값을 넣는다. 앞 TYPE는 자료크기에 영향을 주지 않지만 자료형이라는 추가 정보를 알리기 위해 type를 사용함. 타입이 일치하지 않는다면 메모리를 덮어써서 위험하다. (범위 초과) 1) 주소 연산자 & 해당 변수의 주소 2) 산술 연산자 +- 포인터 ++시 바이트 단위로 증가 3) 간접 연산자 * 변수의 해당 주소로 간다. 4) 간접 멤버 연산자 -> 구조체는 . 를 쓰지만 포인터는 ->를 사용한다. 언리얼엔진에서 자주 ..

c++ 2024.01.22

C++ 개인 필기(3) 반복문 및 스택

for(초기식; (1) 조건식; (2) 증감식(4)){ 본문 (3) } break -> for or while 에서 나갈때 continue -> continue 밑에 부분을 스킵하고 다시 반복문 실행 enum -> 상수 처리라 메모리에 올라가지 않음. const int 1)전처리 -> 2)컴파일 -> 3) 링크 #define -> 코드를 바꿔치기 하는 용도 디버깅 디버그 f11 -> 함수 안까지 , f10 -> 함수 내용 건너뜀, f5 -> 통채로 건너띰 코드 영역 데이터 영역 -> 전역, 정적 힙 영역 -> 동적 할당 스택 영역 -> 지역변수, 매개변수 스택 메모리 -> 높은 주소에서 낮은 주소로 스택 프레임 구성요소 매개변수 / 리턴 / 지역변수 예) int a 함수 이름..

c++ 2024.01.19

언리얼엔진5 C++로 정복하기(2) 엑터 로케이션

이번에는 엑터 로케이션에 대한 정리입니다. 사용해볼 함수는 SetActorLocation(), SetActorRotation(), AddActorWorldOffset(), AddActorWorldRotation() 총 4가지 입니다.. 시작하기 전에 우리의 블루프린트 클래스에 스태틱메쉬 컴포넌트를 붙여줍시다. 생성자에서 CreateDefaultSubObject를 사용하시면 됩니다. 스태틱메쉬에 원하는 메쉬를 넣어주시고 하늘쪽으로 위치 이동시켜줍니다. 액터 로케이션은 FVector로 엑터 로테이션은 FRotator 로 설정해줍시다. 그러면 액터는 이러한 형태를 갖게 됩니다. 여기서 엑터를 실시간으로 움직여줍시다. (SetActorLocation 과 SetActorRotation을 BeginPlay에 선언하..

언리얼 엔진 5 2024.01.18

C++ 개인 필기(2) 비트 및 캐스트

비트 단위 -> 비트단위의 조작이 필요할 때 대표적으로 Bitflag ~bitwise not -> 단일 숫자의 모든 비트들 대상으로 0->1 1->0 예) 1011 -> 0100 & bitwise and -> 1011 0111 -> 0011 (같으면 1 다르면 0) 두 숫자의 모든 비트쌍을 대상으로 and한다. | bitwise or -> 1011 0111 ->1111 (둘중 하나가 1이면 1 아니면 0) 두 숫자의 모든 비트쌍을 대상으로 or한다. ^ bitwise xor -> 1011 0111 -> 1100 두 번 xor 하면 원본이됨 (암호화) 비트열을 N만큼 왼쪽으로 이동 -> 왼쪽에 넘치는 N개의 비트는 버림, 새로 생성되는 N개는 0으로 채움 -> *2를 할때 자주보이는 패턴 >> 비트 우측이..

c++ 2024.01.17

C++ 개인 필기(1) 데이터

프로그래밍 이란? 적절한 데이터를 저장하고 가공 / 데이터 + 로직 데이터에는 rodata 영역 -> readonly data data 영역 -> 0이 아닌 초기화 값이 있을 경우 bss 영역 -> 초기 값이 0이거나 초기값이 없는 변수일 경우 char -> 1바이트, short -> 2바이트 int -> 4바이트 , __int64 -> 8바이트 1Bit -- 최소 단위 , 8비트 -> 1바이트 자료형별 숫자 범위 char (-128 ~ 127) , short(-32768 ~ 32767) , int (-21.4억 ~ 21.4억) 콘솔/모바일 게임 메모리가 늘 부족하여 바이트 단위로 관리가 필수 예) 온라인 게임 4만명이 플레이 할시에 4바이트 * 4만명 데이터 정수 오버 플로우, 정수 언더 플로우 -> ..

c++ 2024.01.16

언리얼엔진5 C++로 정복하기(1) 디버그

프로그래밍에서 가장 중요한 디버깅 언리얼 C++로 알아봅시다. 유니티에서 Debug.log로 콘솔창에 로그를 뛰운것처럼 언리얼엔진에서도 콘솔창에 로그를 뛰울 수 있다. 액터로 cpp파일을 생성하여 비주얼 스튜디오를 켜보자 언리얼에서는 UE_LOG로 로그를 찍어볼 수 있다. 두번째 매개변수는 콘솔창에 뛰우는 종류를 설정할 수 있는데, Display, Warning 등 여러가지가 존재한다. 개인적으로 Warning이 색 때문에 잘 보여서 자주 애용하는거 같다. 작성한 코드를 컴파일후에 블루프린트 클래스로 만들어준다. (유니티의 프리팹 느낌) 만들어진 블루프린트 클래스를 월드에 배치한후에 실행해보면 이런식으로 콘솔창에 로그가 뛰어집니다. 그다음 로그가 아닌 월드에 디버그 그림을 그려봅시다. 언리얼에서는 Dra..

언리얼 엔진 5 2024.01.16

언리얼 엔진5 블루프린트 이해하기

루카스님의 언리얼 엔진 블루프린트 강의를 보면서 공부를 하는중이다. https://www.inflearn.com/course/%EC%96%B8%EB%A6%AC%EC%96%BC5-%EA%B0%9C%EB%B0%9C%EC%9D%98%EC%A0%95%EC%84%9D-1 [입문자를 위한 UE5] Part1. 언리얼 엔진 블루프린트 - 인프런 | 강의 아무것도 모르는 입문자를 위한 강의 입니다. 언리얼 엔진의 비주얼 스크립팅 시스템인 블루프린트를 프로그래머 관점에서 공부하며 익숙해지는 강의입니다., 코딩 생초보도, 프로 게임 개발자 www.inflearn.com 위의 강의인데, 2년간 유니티를 사용하다가 처음에 언리얼엔진으로 오면서 막막했는데, 해당 강의를 듣고 어느정도 현재 자리를 잡은 것 같다. 처음 언리얼 엔..

언리얼 엔진 5 2023.07.13

유니티 3D 간단한 RPG 게임 만들기 (5) - UI 및 간단한 스탯 만들기

다섯번째로는 UI와 스탯을 간단히 다뤄보도록 하겠습니다. 패널 생성후 우선 게임 화면에서 Display1 옆에 해상도를 FullHD로 해줍시다. 오브젝트 이름을 변경하고 Rect transfrom 위치 값을 변경해서 모양을 수정해줍시다. 컬러를 누른후에 투명도를 조절해줍시다. 텍스트를 생성해줍시다. 텍스트 생성후 텍스트 클릭후에 인스펙터창에서 텍스트 항목에서 수정할 수 있습니다. 이후로 텍스트를 생성하여 위 사진과 같이 만들어봅시다. 텍스트 2개와 UI -> SLIDER 생성하여 텍스트 옆에 각각하나씩 배치하도록 합시다. 이제 ui를 다룰수 있도록 스크립트를 생성해봅시다. 캔버스에 방금 작성한 스크립트를 추가해줍시다. 그리고 각각 항목에 맞는 오브젝트들을 추가해줍니다. R키를 누르면 플레이어 정보창이 나..

유니티 2023.06.13

유니티 3D 간단한 RPG 게임 만들기 (4) - 1인칭 및 플레이어 애니메이션

안녕하세요 이번 4번째 글에서는 1인칭 설정과 플레이어 애니메이션을 만들도록 하겠습니다. 1인칭으로 설정하기에 플레이어 애니메이션은 간단하게 만들도록 하겠습니다. 공격 애니메이션 https://assetstore.unity.com/packages/3d/animations/melee-warrior-animations-free-165785 검 https://assetstore.unity.com/packages/3d/props/weapons/shield-sword-spear-178481 Shield,Sword,Spear | 3D 무기 | Unity Asset Store Elevate your workflow with the Shield,Sword,Spear asset from Inari_Green. Find ..

유니티 2023.06.05