전체 글 403

[UE4] 무기 충돌 구조 (USpaceComponent)

🚩 무기 충돌 구조 짜기 (USpaceComponent) UPrimitiveComponent Primitive Rendering 데이터나 Vertex Index 데이터같은 일종의 기하학을 포함하거나 생성하는 Scene 컴포넌트 UShapeComponent 단순한 기하학적 모양으로 표현되는 Primitive 컴포넌트이며 충돌체 3개(box, Sphere, Capsule)의 부모이다! 해당 내용이 언급된 이유는 게임을 제작할 때 여러 종류의 Weapon을 제작하는데, 이때 캡슐 충돌체를 쓸지 박스 충돌체를 쓸지 미리 알지 못한다. 이런경우 부모 클래스인 Weapon이 자식 클래스들(종류 별 무기들)의 충돌 관리를 구현할 때 어떤 충돌인지 모르니 Shape Component로 모두 처리할 수 있다. 또한 몇개..

[C++] 객체 지향 프로그래밍, 클래스, 인터페이스, 클래스 멤버, 데이터 은닉, 캡슐화, 클라이언트-서버 모델, 디폴트 생성자, 파괴자

객체 지향 프로그래밍(OOP)의 중요 기능은 다음과 같다. 추상화 (abstraction) 캡슐화 (encapsulation)와 데이터 은닉(data hiding) 다형 (polymorphism) 상속 (inheritance) 코드의 재활용 (reusability of code) 클래스(class)는 이러한 OOP 기능들을 구현하고 결합하는 데 사용되는 가장 중요한 C++의 도구이다. 클래스(class) - 추상화를 사용자 정의 데이터형으로 변환해주는 C++의 수단으로, 데이터 표현과 데이터를 조작하는 메서드들을 하나의 패키지 안에 결합한다. 인터페이스(interface) - 인터페이스란 두 시스템간의 상호 작용을 위한 공통된 프레임워크이다. - 인터페이스는 프로그래머가 클래스 객체와 상호작용하는 코드를..

📚책읽기 2023.01.30

[UE4] AttachActorToComponent/AttachActorToActor, Get Owner, Get Component by Class 함수

📗 AttachActorToComponent / AttachActorToActor AttachActorTo~ 함수는 원하는 액터에 컴포넌트를 원하는 위치에 붙일 수 있는 기능을 제공한다. 즉, 액터의 RootComponent를 제공된 컴포넌트에 어태치하며, 선택적으로 명명된 소켓에서도 어태치할 수 있다. 타깃: 붙이고 싶은 대상이 되는 Actor 오브젝트 레퍼런스를 연결한다. (디폴트 값: self) Parent (Actor): 타깃이 붙어질 대상이 되는 Actor/Scene Component 오브젝트 레퍼런스를 연결한다. Socket Name: Parent에 붙일 선택적인 소켓의 이름을 연결한다. 사용예시) 해당 Attach 함수를 선언한 곳은 검(Sword) 액터이다. 해당 액터를 캐릭터의 Mesh에..

[UE4] 부모 함수 호출, 블루프린트 매크로 라이브러리(함수 라이브러리), Get 함수(사본/참조)

📕 오버라이딩 - 부모 함수 호출 부모의 함수를 자식이 상속받아 오버라이딩하는 경우 부모의 함수를 먼저 호출한 뒤 자식의 함수를 호출하는것이 올바른 프로그램 순서이다. 따라서 언리얼을 통해 오버라이딩을 구현할 때에도 부모의 함수를 꼭!! 먼저 호출하는 습관을 들이자 📒 블루프린트 매크로 라이브러리 (Blueprint Macro Library) 매크로는 클래스에 노드접기 기능들을 별도로 모아둔 것이라고 이해하면 좋다. 다른 블루프린트에 넣어 사용할 수 있도록 매크로 또는 독립된 그래프 모음을 블루프린트 매크로 라이브러리에 담아둘 수 있다. 자주 사용되는 노드 시퀀스를 실행과 데이터 전송을 위한 입력과 출력까지 그대로 포함하여 저장할 수 있기 때문에 프로그램을 구현하는데 시간을 절약할 수 있다. 매크로는 자..

🎮Unreal4/Basic 2023.01.27

[UE4] 이벤트 디스패처(Event Dispatcher), 리플렉션(Reflection)

🚀 이벤트 디스패처 (Event Dispatcher) 플레이어의 상태를 관리하는 Player State 컴포넌트를 만들던 도중, 플레이어의 상태가 변화되었을 때 해당 상태에 맞는 함수들을 일괄적으로 호출하기 위해 이벤트 디스패처라는 기능을 사용하였다. 이벤트 디스패처에 하나 이상의 이벤트(함수)를 바인딩하면, 이벤트 디스패처 호출 시 등록된 모든 이벤트가 발동되도록 사용할 수 있다. 이러한 이벤트는 블루프린트 클래스 안에서 바인딩해도 되지만, 이벤트 디스패처를 통해 레벨 블루프린트 안에서 발동되도록 할 수도 있다. 이벤트 디스패처를 만들고 노드를 배치하면 위와 같이 호출, 바인드, 언바인드, 모두 언바인드가 뜬다. 호출: 이벤트 디스패처를 호출하여 등록된 이벤트들을 불러오기 바인드(Bind): 디스패처 ..

🎮Unreal4/Basic 2023.01.27

[UE4] 컴포넌트(Actor/Scene Component), 열거형(Enum), 퓨어 함수 설정

🎮 컴포넌트 (Component) 컴포넌트는 액터에 추가시킬 수 있는 함수성 조각으로, 독립적으로 존재할수는 없지만 액터에 추가시키면 자립적으로 사용 가능하다. 따라서 액터에는 포함시켜야 하며 그 자체로는 사용할 수 없다. 또한 컴포넌트는 일반적인 서브 오브젝트의 기본 작동방식과는 상반되게 액터 안에 서브 오브젝트로 생성된 컴포넌트는 인스턴스로 생성된다. 즉, 특정 클래스의 액터 인스턴스 각각은 컴포넌트의 고유 인스턴스를 별도로 갖는다는 뜻이다. 컴포넌트는 액터 컴포넌트와 씬 컴포넌트가 있다. 액터 컴포넌트(Actor Component)는 액터에 추가할 수 있는 재사용 가능 컴포넌트이며 기능만을 가지고 있다. 씬 컴포넌트(Scene Component)는 씬 트랜스폼을 갖는 컴포넌트로, 다른 씬 컴포넌트에..

[UE4] Game Mode Base (Blueprint Class)

🔀 블루프린트 클래스 - Game Mode Base Game Mode Base 클래스는 쉽게말해 게임을 관리해주는 클래스이다. 플레이어 수, 게임에 참가하는 방식 등 기본적인 요소들은 여러 유형의 게임에 공통이지만, 어떤 게임을 개발하는지에 따라 무한대의 규칙 변종이 가능하다. 그런 규칙이 무엇이든, 그 정의와 구현은 "게임모드"에 한다. 즉, 게임 전체를 관할해주는 클래스라고 보면된다. 예를들어, 플레이어 모드일땐 Play Game Mode를 열고, 관전모드일땐 관전 Game Mode를 열면 된다. 언리얼4에 새롭게 도입된 AGameModeBase는 모든 게임모드의 부모클래스가 되었다. 게임모드는 한번에 하나의 게임모드만 사용할 수 있다. 또한 게임모드는 서버에만 존재하므로, 로컬 클라이언트는 원본 게..

[C++] 디폴트 매개변수, 함수 오버로딩, 함수 템플릿

✔ 디폴트 매개변수 디폴트 매개변수는 함수 호출에서 실제 매개변수를 생략했을 경우에 실제 매개변수 대신 사용되는 값이다. int harpo(int n, int m = 4, int j = 5); // 가능 int chico(int n, int m = 6, int j); // 불가능 int groucho(int k = 1, int m = 2, int n = 3); // 가능 ✔ 함수 오버로딩 함수 오버로딩(overloading)은 함수의 다형(polymorphism)이라고도 부른다. 함수의 다형은 서로 다른 여러 개의 함수가 하나의 이름을 공유하는 것이다. 여기서 '다형'은 다양한 형태를 가진다는 뜻이다. 함수 오버로딩은 본질적으로는 같은 일을 처리하지만, 매개변수 리스트가 서로 다른 여러 개의 함수를 하나..

📚책읽기 2023.01.26

[UE4] 콤보공격 (Combo Attack)

언리얼4를 이용하여 한손검(Sword) 콤보공격을 구현하였다. 나중에도 까먹지 않도록 콤보공격의 구현 과정을 정리해보자 ! 1. 마우스 좌클릭을 액션매핑으로 설정하여 공격키로 지정한다. 2. Action 입력 액션이 감지되면 콤보공격 상태인지 Branch로 먼저 검사한다. Enable Combo변수는 기본값이 False이므로 처음 공격을 한 순간은 무조건 False값이 들어가게되어 아래줄에 있는 Play Anim Montage가 실행되고, 첫 공격이 실행된다. 3. 이때 첫 공격을 수행할 때 검을 장착중인지(Equipped), 공격중인 상태인지(Attacking)를 검사하여 모든 조건문을 통과하여 공격할 수 있는 상황이라면 공격중이라는 Attacking 변수를 True로 바꾼 뒤 공격 몽타주를 실행한다...

[선형대수학] 외적(Cross Product)

🔀 외적 (Cross Product) 내적은 어느 차원에서든지 정의가 되어있어 성분이 두 개인 벡터에 대하여 내적을 취할 수 있다. 그러나 외적은 오직 R3에서만 정의된다. 내적의 결과는 스칼라값이지만, 외적의 결과는 벡터이다. ✔ 외적 공식 벡터 a [a1, a2, a3]이 있고 벡터 b [b1, b2, b3]이 있을 때 a x b = [ a2b3 - a3b2, a3b1 -a1b3, a1b2 - a2b1 ] 결과로 나온 벡터는 벡터 a와 b에 직교한다. 벡터 a와 벡터 b를 외적한 결과 벡터에 벡터 a또는 b를 내적한다면 그 결과는 0이 나온다. 따라서 두 벡터 a,b의 내적 값이 0이므로 명백하게 직교하고 있다고 다시 확인할 수 있다. (출처: 칸아카데미)

📚수학공부 2023.01.24

[C++] 인라인 함수, 참조 변수

✔ 인라인 함수(inline) 인라인 기능은 C에 없다가 C++언어에서 새로 생겨난 기능이다. 매크로 함수와 비슷하지만, 매크로는 인라인 코드를 소스적으로 구현한 형태이기 때문에 매개변수를 넘기는 것이 아니라 텍스트를 대체함으로써 동작한다. // 인라인 함수 정의 inline double square(double x) {return x * x}; 인라인 함수는 컴파일된 함수 코드가 프로그램의 다른 코드 안에 직접 삽입되어있다. 즉, 컴파일러가 함수 호출을 그에 대응하는 함수 코드로 대체한다는 것을 의미한다. 인라인 코드를 이용하면 함수를 그 자리에서 처리하므로, 그 함수를 수행하기 위해 프로그램이 다른 주소로 점프했다가 돌아올 필요가 없다. 따라서 일반함수보다 약간 빠르게 수행되지만, 메모리 사용 측면에..

📚책읽기 2023.01.24

[UE4] 데미지 프레임워크(Apply Damage/Any Damage), Instigator Controller, Authority 전용 아이콘

👊 데미지 프레임워크 💥 데미지 전달 함수 언리얼 엔진4에는 총 4개의 데미지 처리 함수가 있다. Apply Damage함수는 입힐 데미지를 전달(Return)하여 사용한다. 예를 들어 플레이어가 적(Enemy)과 충돌하면 Apply Damage함수를 호출하여 Enemy에게 입힐 데미지를 전달하여 사용한다. Apply Damage - 일반적인 면 충돌로 처리하여 데미지를 입힌다. Apply Point Damage - 점 충돌을 이용하여 총알같은 피격 무기 구현에 사용된다. - 어떤 방향에서 Actor의 어느 위치에 맞았는지 데미지를 주는 위치 정보도 얻어올 수있는 함수이다. Apply Radial Damage - 구 형태의 데미지로 수류탄같이 방사형으로 퍼지는 데미지를 구현하는데 사용된다. - Origi..

728x90