목록분류 전체보기 (194)
초보 코린이의 성장 일지
https://www.youtube.com/watch?v=BoVEbNSoy3E - 아직까지 예외처리 해 줄게 많다 - 막히는 부분 잘 생각해봐야한다.
https://www.youtube.com/watch?v=PupQMRW9jSY - 아직까진 많이 부족하다 - 구조를 잘 잡을 필요가 있다
https://www.youtube.com/watch?v=EuwPhzGoIoo
인터페이스를 활용하여 동작들을 관리 블루프린트 -> 블루프린트 인터페이스 생성 -> 함수 추가 및 설정 구조체도 하나 생성해주고 지정해준다. Enemy로 가서 상단의 클래스 세팅을 누른 후 부모 클래스를 지정해주고 인터페이스 만든 IDamage를 추가해준다. 그럼 왼쪽에 인터페이스란에 들어온다. 이제 정의를 해주면 된다 사용할 변수들과 인터페이스 목록 컴포넌트 추가를 눌러서 -> StateComponent를 생성 -> get으로 가져와서 On State Type 이벤트 바인딩에 연결 -> 커스텀 이벤트 이름을 OnStateTypeChanged로 동일하게 수정 -> switch 만들어주고 연결 -> 그다음 Hitted 연결 무언가 때리면 State Type가 바뀔테니 스위치 문에서 Hitted로 들어가서 ..
무기 애니메이션 적용 및 콤보 구현을 시작해 보겠다. 칼을 담당해주는 Combo_Sword 클릭 BeginPlay 이벤트도 오버라이딩한 상속 받은 상태기 때문에 부모를 먼저 콜 해줘야한다. 부모의 BeginPlay을 콜해준다. Mesh에 칼을 붙여줘야 하기 때문에 Character 안에 있는 Mesh를 호출해준다. 소켓은 Holster_Sword로 위치를 골반쪽에 붙여준다. 칼을 들었으면 해제도 해야 하므로 Unequip도 동일하게 연결해준다. 칼 장착도 동일하게 노드를 연결해준다. 소켓은 Hand_Sword로 손으로 지정해준다. 오버라이딩 하는 방법은 직접 함수를 눌러서 하는 방법이 있고 custom으로 할 수 있다. 직접 눌러서 하는 경우 = 복잡한 이벤트 처리 custom = 간단한 이벤트 처리 사..
디테일 부분에서 빼먹을게 생길만큼 어려운 내용이다. 그래도 정리를 시작해 보겠다. 우선 무기를 바꾸기 위한 기본적인 틀을 만들어 보겠다. 변수유형 weapon type로 Tpye와 PrecType를 만들어준다. Type를 Prec Type에 세팅해주고 현재 타입 Type에 받아준다. 이벤트 디스패처를 만들고 파라미터 2개를 생성해준다. 디스패처안에 Type 자리로 받아준다. SetUnarmedMode에서 교체할 Type를 콜해준다. Unequip 상태니 In New Type는 Unarmed로 지정해준다. 이제 SetMode 무기가 원래 장착 안되어 있다면 장착하고 장착하고 있다면 해제하고 장착하도록 구현할 것이다. 장착할 SetMode에 무기를 파라미터도 받아준다. 새로 장착할 무기가 기존 타입과 같다면..
새로운 파일을 생성하고 지난시간까지 사용하던 폴더에서 필요한 것만 가져와서 다시 작업을 해보겠다. 플레이에 기본적인 틀은 거의 동일하니 큰 상관은 없을 것이다. 도형들과 머터리얼 색을 입혀서 단순하게 만들어 본 것이다. 이제 FSM이 아닌 State로 이제 움직임을 변경해 볼 것이다. 그래서 ABP 플레이어와 상대방(적)을 한번에 묶어서 사용할 것이다. 이름만 바꿔준 것 일뿐 전과 동일하다. 내부적인건 이제 수정해 볼 것이다. 앞에 블로그 내용에도 나와있는 ABP_Player 이벤트 그래프이다. 이제는 통일할 것이기 때문에 필요없는 동작들은 제거해주고 위처럼 필요한것만 남겨두게 될 것이다. 또 한 변수 기존 Player 이름 및 유형을 Character로 변경해준다. 폴더에 오른쪽 마우스 클릭 -> 블루..
상대방에게 무기로 공격했을때 데미지를 판별해 줄 수 있는 방법을 생각해야한다. Apply Damage를 선언해준다. 검색해보면 다른 3가지 Apply가 나오는데 지금은 무기를 사용해여 때릴것이기 때문에 다른건 사용하지 않는다. Base Damage = 0이면 동작하지 않는다. 최소한 0.1이나 음수도 좋으니 숫자를 바꿔줘야한다. Event Instigator = 플레이어가 칼을 휘두르기 때문에 플레이어가 된다. Damage Causer = 칼 자체가 된다. 전에 올린 Sword에서 노드 몇개만 추가된 상태이다. Sword의 소유자 Get Owner을 사용하여 불러주고 Get Instigator Controller으로 노드를 연결해준다. Damage Causer은 위에 정리해놓은 것처럼 Sword를 불러야..
- 모든 변수, 함수, 클래스, enum, 템플릿 등등 의 정의는 유일해야 한다. - inline가 아닌 모든 함수의 변수들의 정의는 전체 프로그램에서 유일해야 한다. 정의 (Definition) 와 선언 (Declaration) 선언 - 새로운 선언을 하거나, 기존에 선언된 이름을 재선언 하는 것 정의 - 선언을 포함하는 개념으로, 선언된 개체를 완전히 정의함을 뜻함 선언 정의 번외 extern 지정자가 들어간 선언의 경우 명시적으로 초기화 되지 않는다면 선언 a는 선언이지만 정의가 아니다. b는 1로 초기화 되었으므로 정의 된 것이다. ODR규칙에 위배되지도 않으며, f()는 올바른 코드 f의 선언이지 정의가 아니기 때문에 여러번의 선언해도 문제가 없다.. 컴파일 오류가 발생한다. inline로 정의..
인라인 함수 - 프로그램의 실행 속도를 높이기 위해 C++에 새로 보강된 함수 함수 호출 프로그램 내부 구조 작성한 코드 프로그램을 실행 -> 명령들을 컴퓨터 메모리에 로드 -> 로드된 명령들은 각각 하나의 특정 메모리 구조를 갖는다 -> 명령어들을 순차적으로 실행 -> 루프나 분기문을 만나면 특정 주소로 명령을 건너뛴다 -> 함수 호출 명령을 수행 -> 함수 호출 명령에 도달 하고 그 다음에 있는 명령의 주소를 메모리(스택)에 저장 -> 스택에 매개변수를 복사한 후, 그 함수가 시작되는 메모리 위치로 이동 -> 함수 실행 함수 리턴 과정 함수가 종료 -> 함수의 리턴 값을 임시 저장소에 저장 -> 스택에서 호출시점으로 가서 주소 값을 꺼내옴 -> 호출된 시점으로 복귀 인라인 함수의 필요성 장점 - 위에..