TIL

2/10일자 TIL

오딘.L.스트레인지 2026. 2. 10. 20:03

코드카타-K번째 수

#include <vector>
#include <algorithm>
using namespace std;

vector<int> solution(vector<int> array, vector<vector<int>> commands) {
    vector<int> answer;

    for (const auto& cmd : commands) 
    {
        int i = cmd[0];
        int j = cmd[1];
        int k = cmd[2];

        vector<int> sub;
        for (int idx =  i-1; idx <= j-1; ++idx) 
        {
            sub.push_back(array[idx]);
        }

        sort(sub.begin(), sub.end());

        answer.push_back(sub[ k-1 ]);
    }

    return answer;
}

 

카메라 타겟암 변환 구현

1.앞으로 움직이면 카메라가 멀어진다
2.카메라가 움직였을때 딜레이가 있다
3.뒤로가면 줌이 땡겨진다

이것을 구현했는데

더보기

ACharacter 클래스를 상속받은 코드에서 다음과 같이 작성할 수 있었다.

// 속도에 따른 팔 길이 조절을 위한 설정값
UPROPERTY(EditAnywhere, Category = "Camera")
float MinArmLength = 300.0f;

UPROPERTY(EditAnywhere, Category = "Camera")
float MaxArmLength = 800.0f;

UPROPERTY(EditAnywhere, Category = "Camera")
float ZoomInterpSpeed = 2.0f; // 변화 속도

이 코드는 PlayerCharacterBase.h 파일에,

void AMyCharacter::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);

    // 1. 캐릭터의 로컬 앞방향 속도 계산
    float ForwardSpeed = FVector::DotProduct(GetVelocity(), GetActorForwardVector());

    // 2. 목표 거리 결정 (앞으로 가면 Max, 뒤로 가면 Min에 가깝게)
    // 캐릭터의 최대 속도 대비 현재 속도 비율로 계산하거나 간단한 조건문 사용
    float TargetLength = MinArmLength;

    if (ForwardSpeed > 10.0f) {
        TargetLength = MaxArmLength; // 앞으로 갈 때 멀어짐
    }
    else if (ForwardSpeed < -10.0f) {
        TargetLength = MinArmLength * 0.5f; // 뒤로 갈 때 더 당겨짐
    }
    else {
        TargetLength = MinArmLength; // 정지 시 기본 거리
    }

    // 3. FInterpTo를 사용하여 부드럽게 거리 조절
    SpringArm->TargetArmLength = FMath::FInterpTo(
        SpringArm->TargetArmLength, 
        TargetLength, 
        DeltaTime, 
        ZoomInterpSpeed
    );
}

이 코드는 PlayerCharacterBase.cpp 파일에 이식하였다.

 

'TIL' 카테고리의 다른 글

2/12일자 TIL  (0) 2026.02.12
2/11일자 TIL  (0) 2026.02.11
2/09일자 TIL  (0) 2026.02.09
2/06일자 TIL  (0) 2026.02.06
2/05일자 TIL  (0) 2026.02.05