런타임에서 머티리얼의 파라미터 값을 변경해 보자.(ex. 투명도(Opacity) 값을 0에서 1로 변경하여 보이게 하는 등) 이는 머티리얼이 어디에 적용되어 있느냐에 따라 방법이 나뉜다.캐릭터 같은 스켈레탈 메쉬에 적용된 머티리얼의 파라미터인가?일반 머티리얼이나 포스트 프로세스에 적용된 머티리얼의 파라미터인가? 등등 캐릭터 머티리얼캐릭터의 머티리얼 파라미터를 수정하는 방법을 알아보자.이는 캐릭터가 피격당할 때, 혹은 분노, 변신 같은 특정 효과들이 적용되는 경우 유용하다. 캐릭터는 일반적으로 SkeletalMeshComponent를 사용한다.여기에는 Set Scalar Parameter Value on Materials 함수가 있다.이를 통해, 변경하고자 하는 파라미터의 이름과, 변경할 값을 쉽게 변경..
https://www.acmicpc.net/problem/3197 정석은 분리 집합(Disjoint Set)을 활용해서 푸는 것 같다.나는 직접적으로 분리 집합을 활용하여 풀지는 않았지만, 이론을 비슷하게 사용했기 때문에 풀린 것 같다. 먼저, 분리 집합과 비슷하게 각 물 좌표마다 물 번호를 매겼다.이는 서로 이어져있을 시, 같은 번호를 공유한다. 물을 모두 순회하며, 닿는 빙하들에 자신의 물 번호를 매기고, 큐에 담는다.이러면, 매 날짜마다 해동되는 새 물만이 큐에 담기게 된다. (0번째 날 제외) 물 큐를 순회하며, 각자 BFS를 실행해서 물 번호를 갱신한다.빙하가 녹아 두 물이 합쳐질 수 있게 되면, 여기서 물 번호가 합쳐질 것이다. 두 백조의 물 번호를 비교하여 같으면 종료한다.#include #..
https://school.programmers.co.kr/learn/courses/30/lessons/60059 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 키(Key)보다 자물쇠(Lock)의 배열이 더 클 수 있음에 유의하자. 키를 이동 & 회전시켜서 자물쇠에 모든 홈이 채워지게 해야 한다.즉, 자물쇠 배열이 모두 1이 되어야 한다. 자물쇠(Lock) 비교 조건자물쇠(Lock)의 해당 칸이 1인가? 1이라면, 해당 칸의 키(Key)는 0이어야 한다.자물쇠(Lock)의 해당 칸 칸이 1인데, 키(Key)도 1이라면 실패다.단, 키(Key)가 자물쇠(Lock) 크기보다 작을 수 있기 때문에, 바로 리..
|사용 참고|ReplicateSubobjects는 네트워크 리플리케이션을 수행할 때 사용되는 함수이다.기본적으로 언리얼 엔진의 네트워크 리플리케이션 시스템은 AActor나 UActorComponent에 대해서만 자동으로 복제를 수행한다.특정한 서브 오브젝트(ex. UObject 기반 클래스)들은 자동으로 복제되지 않는다.이러한 서브 오브젝트를 복제하려면 ReplicateSubobjects를 오버라이드하여 직접 처리해줘야 한다. // .hvirtual bool ReplicateSubobjects(class UActorChannel* Channel, class FOutBunch* Bunch, FReplicationFlags* RepFlags) override; 부모 클래스의 ReplicateSubobjec..
https://www.acmicpc.net/problem/2573 시간마다 빙산을 녹이는 로직 실행 (상하좌우 0이 있으면 1씩 줄이기) 시간이 지난 후, 남아있는 아무 빙산 1개를 시작으로 BFS 실행 BFS로 탐색한 빙하의 수와 맵에 남아있는 빙하의 수가 일치하지 않으면, 시간 리턴 후 종료맵에 빙하가 없으면 0 리턴 후 종료#include #include #include using namespace std;int dy[]{ -1, 0, 1, 0 };int dx[]{ 0, 1, 0, -1 };int N, M;void AddTime(vector>& Map, queue& qy, queue& qx, queue& qn, vector>& Visit){ queue> Remove; int Size = qy.siz..
https://www.acmicpc.net/problem/1202 가방은 오름차순으로 정렬한다.가장 가벼운 가방으로 들 수 있는 보석들은 이후 모든 가방으로도 들 수 있기 때문이다. 보석은 무게를 기준으로 오름차순으로 정렬하되, 무게가 같은 경우, 가격순으로 내림차순으로 정렬한다.훔칠 수 있는 보석 가격의 합의 최댓값을 구해야 하기 때문이다. 가방을 모두 순회하며 해당 가방의 무게로 들 수 있는 보석들을 우선순위 큐에 저장한다.우선순위 큐는 무게와 상관없이 가격순으로 내림차순 정렬이 되도록 한다. 현재 가방 무게로 가장 비싼 보석을 더하고, 큐에서 제거한다.#include #include #include #include using namespace std;bool Cmp(const pair& a, con..
|사용 예시|FastArraySerializer는 리플리케이션 성능을 최적화하기 위해 사용하는 구조체이다. 일반적으로, TArray를 리플리케이션하면, 배열의 요소 하나만 변경되어도 배열 전체를 다시 전송해야 하기 때문에, 불필요한 복제가 많이 생긴다. 하지만, FastArraySerializer를 사용하연, 배열 내 개별 요소의 변경 사항(추가, 삭제, 수정)만 네트워크로 전송하여 네트워크 부하를 줄이고 성능을 향상할 수 있다. 기본 사용 구조FastArraySerializer를 사용하려면, 기본적으로 Build.cs에 "NetCore" 모듈을 추가해줘야 한다.// .Build.csPrivateDependencyModuleNames.AddRange(new string[] { "NetCore" }); ..
https://www.acmicpc.net/problem/20055 #include #include #include using namespace std;int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, K, Answer = 0; cin >> N >> K; // first = 로봇 여부, second = 벨트 칸 번호 vector> Belt; for (int i = 0, j; i > j, Belt.push_back({ false, j }); // 컨베이어 벨트위에 올려진 로봇 // 선입선출로 계산 과정이 이뤄지기에 queue로 저장 queue Robot; while (K > 0) { Answer++; /..