분류 전체보기
-
카메라 회전 보간Game Programming/언리얼 2023. 10. 6. 16:50
부드러운,,카메라 회전을 만들고 싶었다. void AMyCharacter::LookUpAtRate(float Rate) { if (!Rate) BaseLookUpRate = 0.f; BaseLookUpRate = FMath::FInterpTo( BaseLookUpRate, 45, GetWorld()->GetDeltaSeconds(), 0.01); AddControllerYawInput(Rate * BaseLookUpRate);// deg/sec * sec/frame } void AMyCharacter::TrunAtRate(float Rate) { if (!Rate) BaseTurnRate = 0.f; BaseTurnRate = FMath::FInterpTo( BaseTurnRate, 45, GetWorl..
-
케릭터 방향에 따른 애니메이션Game Programming/언리얼 2023. 10. 6. 16:28
케릭터 시점에 따른 애니메이션 조절을 위해 조준점 각도가 필요했다. GetBaseAimRotation이라는 Pawn에서 함수를 사용한다. 오른쪽으로 회전시키면 180도까지 +를 유지하다, 180도를 넘어가는 순간 -로 바뀌면서 감소한다. 결국 내가 구하고 싶은 값은 (진행방향 - 조준방향)이다. 이를 코드로 표현하자면 애니메이션쪽 코드에 FRotator AimRotation = MyCharacter->GetBaseAimRotation(); FString RotationMessage = FString::Printf(TEXT("Base Aim Rotation: %f"), AimRotation.Yaw); FRotator MovementRotation = UKismetMathLibrary::MakeRotFrom..
-
블루프린트 엑터를 부모에 붙이기Game Programming/언리얼 2023. 10. 6. 14:51
에셋에 FlashLight가 있어서 한번 써보기로 했다. 두번째 에셋이 FlashLight인데 코드를 먼저 보여준다면 UObject* SpawnActor = Cast(StaticLoadObject(UObject::StaticClass(), NULL, TEXT("/Game/Voyager/Blueprints/BP_FlashLightWeapon.BP_FlashLightWeapon"))); UBlueprint* GeneratedBP = Cast(SpawnActor); if (!SpawnActor) { GEngine->AddOnScreenDebugMessage(2, 5, FColor::Red, FString::Printf(TEXT("CANT FIND OBJECT TO SPAWN"))); return; } UCla..
-
Gun Point Light 효과Game Programming/언리얼 2023. 10. 6. 14:30
더보기 총을 발사 할 때 마다...라이트닝 효과를 주고 싶었다. 내가 한 생각은 "총에 포인트라이트를 달고 껏다 켯다하면 되겠네 ?" 였다. 그래서 포인트라이트를 cpp에서 생성했다. PointLight = CreateDefaultSubobject(TEXT("WeaponsFlashlight")); PointLight->Mobility = EComponentMobility::Movable; PointLight->SetupAttachment(RootComponent); PointLight->SetRelativeRotation(FRotator(0.0f, 0.0f, 0.0f)); PointLight->SetVisibility(false); PointLight->UpdateColorAndBrightness(); ..
-
프로그래머스 Lv2 가장 큰 정사각형 찾기Computer Science/프로그래머스 2023. 10. 6. 13:29
더보기 나는 첫번째로 이 문제를 dfs로 풀려고 했다. board의 행과 열이 1000이하의 자연수 이므로 최대 시간 복잡도가 1000 ^ 4가 되므로 시간 초가가 될 거라는 것을 예상하고 풀었다... 당연히 시간 복잡도에서 실패,,,아래는 틀린 코드이다. #include #include using namespace std; int n = 0; int m = 0; bool visit[1001][1001]; int rectangle(const vector& board, int x, int y, int depth) { if(x + 1 >= m || y + 1 >= n) { return depth * depth; } if(board[y][x + 1] && board[y + 1][x] && board[y + 1..
-
프로그래머스 Lv2 올바른 괄호Computer Science/프로그래머스 2023. 10. 6. 11:49
더보기 올바른 문자열이 아닌 경우는 '(' 이 없는데 ')' 문자가 오는 경우 '(' 이 있는데 문자열이 끝난 경우 따라서 나는 코드를 아래와 같이 설계했다. 스택이 비었는데 ')' 문자가 오면 잘못된 문자열 스택이 비어있지 않을 때 스택의 top() == '(' 이고, 현재 문자가 ')'이면 스택에서 문자열을 제거한다. 모든 문자열을 탐색했는데 스택이 차있으면 ')' 문자가 부족하다는 것이므로 잘못된 문자열 코드는 아래와 같다. #include #include #include using namespace std; bool solution(string s) { bool answer = true; stack st; for(int i = 0; i < s.size(); ++i) { if(st.empty() &..
-
프로그래머스 Lv2 다음 큰 숫Computer Science/프로그래머스 2023. 10. 6. 11:36
더보기 이 문제는 n을 늘려가면서 2진수 일 때 1 개수가 같은지 확인하면 된다. 가장 작은 수를 찾으면 되기 때문에 조건 1, 2가 맞는지 확인하고 바로 리턴하면 된다. 2진수의 개수가 같은지 확인하는 부분이 어려웠는데 bitmasking을 통해서 풀었다. n의 최대값이 1'000'000이므로 24비트까지 검사를 했다. int bitmask(int n) { int result = 0; for(int i = 0; i >i) & 1) == 1) ++result; } return result; } 더보기 위와 같이 bitmasking 코드를 구현하면된다. #include #include using namespace std; int bitmask(int n) { int result = 0; for(int i ..