본문 바로가기

전체 글110

[Unreal 5, C++ & Blueprint] 적 AI 생성하기 : 1 STEP 1 : AI 컨트롤러 C++ 클래스 생성 적의 AI를 생성하기 위해 AI Controller Class 를 생성할 것이다. 먼저, Ctrl + Space bar 를 눌러 Content Browser 를 열어준다.(UE5 기준) C++ Classes를 선택하고, 왼쪽 상단의 Add 버튼을 눌러 새로운 C++ 클래스를 만들어 줄 것이다. 상단의 All Classes를 선택해주고, AI controller 를 검색해서 선택해준다. 이름은 편한대로 지으면 된다. 그러면 위와 같은 초기 코드가 만들어질 것이다. 여기서 부터 시작이다. STEP 2 : AI 컨트롤러의 자식 Blueprint 생성 새로운 블루프린트 클래스를 생성해준다. 이때, 아까 만들어둔 Enemy AI Controller 를 부모로 설정.. 2022. 6. 28.
[Unreal 5, C++] 캐릭터 사망 & 애니메이션 : C++ 변수, 함수를 블루프린트에서 사용하기 캐릭터의 공격에 따라, 상대방의 체력을 감소 시키는 것까지 구현이 되었다고 가정하고 쓰는 글입니다. STEP 1 : 애니메이션 블루프린트 설정 먼저, 위와같은 상태를 만들어 준다. 죽음은 언제 어떤 상황에서도 발생할 수 있으므로 가급적 웬만한 상황에서 다 연결시켜 준다. (유니티의 AnyState 같은 기능이 언리얼에 있는지 아직 공부하지 못 한 상태) Dead상태로 들어가 Dead 애니메이션을 선택하고, Detail 패널의 Loop를 반드시 꺼주도록 하자. 죽는 모션이 반복되면 안되기 때문. 그리고 IsDead 변수를 만들어 조건으로 넣어준다. STEP 2 : C++ 스크립트 설정 public : UFUNCTION(BlueprintPure) bool IsDead() const; // 사망 함수 UFUN.. 2022. 6. 28.
[Unreal 5, Blueprint & C++] 캐릭터 점프 구현과 오류 해결 Animation Transition STEP 1 : 상태 만들고 조건 연결하기 캐릭터의 점프를 구현하기 위해선 AnimGraph 의 State Machine 인 Locomotion 에서 수정을 해줄 것 이다. 기본적으로, 캐릭터의 Animation Blueprint 파일에서 시작한다고 가정할 것이다. Locomotion을 더블 클릭하여 들어가 보면 기존에 이동을 구현했던 Movement 상태가 존재한다. 이동 중에 캐릭터가 점프를 할 것이므로, movement에서 화살표를 뻗어 새로운 상태를 만들어 줄 필요가 있다. 사이드바에 Asset Browser 메뉴에서 Jump를 검색하여 점프 애니메이션을 가져온다. 여기서 Start, Apex(공중에 있는 동작), Recovery(착륙하는 동작) 세가지를 가져올 건데, 애니메이션 에셋의 이름은 에.. 2022. 6. 28.
[C++] 알파벳 찾기 : 10809번 문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 풀이 #include using namespace std; int main() { string s; int result[26] = {0, }; // 단어 s 와 결과배열 cin >> s; // 결과 배열 -1로 초기화 for (int i = 0; i < 26; i++) { result[i] = -1; } for (char i = 'a'; i 2022. 6. 26.
[C++] 문자형 숫자의 합 : 11720번 문제 N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. 풀이 #include using namespace std; int main() { char* numbers; // 숫자 문자열 int count; // 최대 길이 int result = 0; // 결과값 cin >> count; // 최대 길이 입력 cin.ignore(); numbers = new char[count]; // 메모리 할당 cin >> numbers; // 문자 1 = 49 문자 0 = 48 // 따라서 문자형 숫자를 정수형으로 바꾸기 위해선 '0'을 뺀다. for (int i = 0; i < count; i++) { result += (numbers[i] - '0'); } cout 2022. 6. 26.
[C++] 아스키코드 : 11654번 문제 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. 풀이 #include using namespace std; int main() { char c; // 문자 입력 cin >> c; int asciiValue = (int)c;; // 아스키 값 저장 cout 2022. 6. 26.