목록언리얼 (116)
초보 코린이의 성장 일지
1. Return Value를 체크하면, Return이 가능한 이벤트만 살아남게 된다. 2. Value Type와 입력을 하나 받아서 생성해준다. 1. FBoxLightColorOverlap 선언해준다. 2. Return 시켜줄 String 받아준다. 1. BeginPlay에 추가해준다. 1. OnRandomColor 선언 2. 설정 후 Return. 1. 실행 해보면 들어갈때마다 이벤트를 호출해 색이 변하면서, 화면상에 Log가 출력된다. 1. MultiTrigger를 생성해준다. 1. RetVal은 MULTICAST와 사용할 수 없다 2. EVENT는 MULTICAST와 비슷하기 때문에 동시에 사용이 불가능하다. 3. 입력은 2개를 받아준다. 4. 2개 이벤트 함수를 다룰 수 있는 기능을 한다. 1...
1. Component 충돌을 위해 생성해준다. 1. 필요한 .h 추가후 생성해준다. 2. 충돌되었는지 확인을 위해 만들어 놓은 Log를 사용한다. 1. 블루프린트 클래스를 추가해준다. 1. 충돌, 충돌 후 둘다 정상적으로 Log가 출력되는걸 확인 할 수 있다. 1. Hit된 상태도 확인해보기 위해 생성해준다. 1. C02_ComponentOverlap와 동일하다 로그로 확인해 볼것이기 때문에 복사해서 가져오면 된다. 2. Hit가 계속 일어나는지 확인하기 위해 OnComponentHit를 추가해준다. 1. 생성 후 맵에 올려준다. 1. Box에 Simulation Generates를 충돌하게 만들어 주기위해 켜줘야하며, 객체 끼리 충돌할때 켜줘야하는 쪽은 충돌을 받는 쪽이 켜주는게 옳은 방법이다. Qu..
이제 자주 사용하거나 편리하게 사용하도록 매크로를 많이 생성하게 된다. 우선 Null 체크 관련해서도 매크로 생성을 하도록 하겠다. 1. 체크 후 끝내기, 하나 더 받아서 값 돌려주는 return 매크로 생성 1. 만들어 놓은 매크로로 Null 체크를 해준다. 2. 그리고 Speed 세팅 1. BP_CPlayer에 비어있는 Class를 이제 넣어 줄 것이다. 2. 레퍼런스 주소 넣어주고 컴파일 후 다시 확인하면 잘 들어가있는걸 볼 수 있다. 1. 애니메이션 들어간 상태니 이제 알맞은 동작을 수행하게 함수를 만들어준다. 2. 스피드를 설정해준다. 이제 키를 누르면 뛰어다닐수 있게 된다. 1. 이제 플레이어에 움직임이 끝이났고, 충돌에 관련한 이벤트 처리를 시작해보기 위해 맵을 나눠서 오른쪽 파란색 진형에서..
1. 플레이어를 생성해주고, 이제 플레이어를 움직이게 만들어 볼 것이다. 2. 기본적인 Helpers에 템플릿을 생성해준다. 3. 사용 이유는Player에게 SpringArm, Camera를 붙이기 위해. 1. 생성에 필요한 Component들을 추가해준다. 2. Attach해줘야 할 객체에 알맞게 설정. 3. Mesh 위치와 SpringArm 위치 조절 해준다. 1. BP_CPlayer 블루프린트 클래스 생성을 해준다. 2. 생성 후 들어와보면, 입력한 세팅값 그대로 들어와 있는걸 볼 수 있다. 1. 이제 생성한 Player를 맵에 등장시켜줘야 할때 사용한 방법이 GameMode였다. 2. 프로젝트를 만들었을때 생성되었던 기본 BaseMode를 알기 쉽도록 이름을 변경해준다. 3. 무엇인가 변경되었으니..
BluePrint에서 무기를 들고, 걸어 다닐때 부들 거리는 증상이 있었다. 이걸 한번 잡아보겠다. 앞으로 C++를 다룰때에도 필요하고 중요한 부분이 되기 때문이다. 1. 이 부분을 알고 가야 한다. 카메라가 만약 90도로 설정되어있다고 가정하고, 위에서 캐릭터를 바라봤을때, 수직이 이뤄진다. 여기서 90도 보다 아래에 숫자면 문제가 없지만, 0.1이라도 높다면 카메라 반전이 일어나면서, 축을 잃어버리는 "짐벌락"이 일어난다. 그래서 90도가 기준이 된다면, 89에 + @로 지수를 더 해주는게 좋은 방법이다. 위에 설명을 토대로 본격적으로 변화를 시킬 것이다. 원인은 무엇이였냐면, 시야 각차 때문이다. 시야 각차가 일어나는 원인은, 플레이어는 정면이지만, 카메라 중심은 캐릭터 옆에서 바라보기 때문에 캐릭..
로그를 기본적으로 다룰 줄 알아야 프로그램을 구축할때 많은 도움이 되므로 조금 더 다뤄보도록 하겠다. 1. 한번에 출력하기 위해 함수를 하나 만들어줬다. 2. 필요한 부분만 잘라서 출력해주기 위해 index로 접근해서 걸러내준다. 1. 위에서 작성한 로그를 사용하려한다. 2. 현재 작성하고 있는 줄을 확인하려고 사용하게 되는데, 이걸 매번 필요할때마다 작성하는거 보다는 매크로로 빼서 사용하는게 더 효율적이다. 3. 3가지 로그를 한번에 엮어서 LogLine()로 사용할 수 있다. 4. 실행하면 현재 콜해준 줄이 출력로그에 나오는걸 볼 수 있다. (이 줄이 실행되고 있는지 판단할때 사용) 1. 이제 로그가 아닌 화면에서 보여줄 수 있는 Log를 만들어서 사용할 것이다. 2. 사용하려면 Engine을 사용해..
1. Mesh를 가지고 Sphere 클래스를 생성해준다. 1. h, cpp 정의한 내용으로, Mesh 생성 코드를 그대로 가져와서 알맞은 도형 레퍼런스 주소 복사해서 넣어준다. 1. Cone도 동일하게 생성해준다. 그리고 컴파일해주면 위와 같이 2개의 도형이 생성되어있는걸 볼 수 있다. 1. 만들어준 Sphere, Cone를 이제 블루프린트로 변화시켜준다. 2. 위와 같이 생성된걸 볼 수 있다. 이제 맵에 직접적으로 보여주기 위해 Spawn시킬 클래스를 하나 생성해 볼 것이다. 1. 생성을 우선 완료해주었다. 1. 공통으로 사용하기 위해 Anywhere로 만들어 준다. 2. UClass로 만들어준다. 1. 지정한 범위를 벗어나서 만드는걸 방지하기 위해 클래스에 제한을 걸어주기 위해 TSubclassOf로..
1. 위 C01 Property에 보면 A, C는 명시되어 있지만 B는 등장하지 않는다. 2. 내부적으로 들어가면 B가 등장한다. 3. 기본값을 지정하지 않으면, 들어간 값대로 적용되고, 만약 기본값을 지정해놓으면 객체가 다 그 값을 공유한다. Anywhere = 값을 공통으로도 사용 가능하고, 변경도 가능하다. (나머지는 전부 여기서 사용) DefaultsOnly = 자료형에서 지정한 값을 모두 기본으로 공유한다. (Actor에서만 사용가능) InstanceOnly = 객체화 했을때만, 값을 변경할 수 있다. (Actor에서만 사용가능) 1. A, B, C 출력을 값을 보기 위한 선언. 2. 출력 로그로 값을 볼 수 있다. 1. 시간이 흘러가는걸 볼 수 있다. 값 확인 용으로 사용하면 좋다 1. 접근지..
세팅을 하기 위한 작업을 시작해보겠다. C++에서 컴파일 과정 - 전처리기 (.h 및 difine) -> 컴파일러 (결과를 가지고 cpp 번역) -> 오브젝트 파일 (obj) -> 링커(linker) -> 실행 파일(exe) 언리얼 C++ 컴파일 과정 - Unreal Header Toll (UHT) -> 언리얼 컴파일러 (cpp 처리) -> 동적 파일 -> 모듈화 -> dll 1. 동일하게 C++로 변경하여 생성해준다. 1. 만일 비주얼 스튜디오 버전중에 사용하고 싶은 버전으로 변경을 하고 싶다면, 위에 과정을 거처서 변경하면 된다. 2. 설정에 버전 표시없는 Visual Studio로 하게되면 자신의 컴퓨터에 깔려있는 최신 버전 Visual 버전이 실행된다. 1. 만일 오류가 발생하여 문제가 생겼을 경..
AI 마지막 EQS를 다뤄볼 것이다. 1. Melee를 복사하여 이름을 EQ로 변경해주고 시작해 보겠다. 1. Behavior Tree와 Class 둘다 EQ로 설정해준다. 1. 인바이런먼트 생성해준다. 2. 블랙보드에 사용할 Key도 하나 생성해 줘야한다. EQS가 return해주는 값에 유형은 vector이거나 actor 두개다 vector이면 필요한 위치를 return 해주고, actor면 필요한 공간에서 actor를 return 해준다. 1. 위치만 다루게 될거라 vector만 추가해준다. 2. vector은 타입이 확정적으로 되어있기 때문에 설정이 따로 필요하지 않다. 1. Blackboard Key는 공간에 지시를 내렸을때 return되는 Key값이므로, 만들어준 EQ_Location으로 선택..