Tick 함수로 Actor의 Transform 조정하기

끄적끄적·2025년 1월 22일

오늘의 숙제

void AItem::BeginPlay()
{
    Super::BeginPlay();


    FVector NewLocation(300.0f, 200.0f, 100.0f);
    FRotator NewRotation(0.0f, 90.0f, 0.0f);
    FVector NewScale(1.0f);

    FTransform NewTransForm(NewRotation, NewLocation, NewScale); // 초기 위치

    SetActorTransform(NewTransForm);
    Times = 0.0f; //시간 측정 변수
    DefaultPos = this->GetActorLocation(); // 기존위치 저장
    AddScale = 2.0f; // 초당 스케일 변화값

}
void AItem::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);

    Times += DeltaTime; // 시간측정
    
    if (Times > 2.0f) //2초
    {  
        flag = !flag;
        Times = 0.0f;
    }

    if (flag)//2초마다 스케일 조정
    {
        SetActorScale3D(this->GetActorScale3D() + FVector(AddScale * DeltaTime));
    }
    else
    {
        SetActorScale3D(this->GetActorScale3D() +FVector(-AddScale * DeltaTime));
    }


    if (!FMath::IsNearlyZero(RotationSpeedYaw)) //회전
    {
        AddActorLocalRotation(FRotator(0.0f, RotationSpeedYaw * DeltaTime, 0.0f));

    }

    if (_Distance > 100.0f)// 사이값 100 이상이면 반대로
    {
        SpeedZ = SpeedZ*-1;
    }

    AddActorWorldOffset(FVector(0.0f, 0.0f, SpeedZ * DeltaTime)); 
    
    _Distance = FVector::Distance(DefaultPos, this->GetActorLocation()); //거리 계산

}

오늘의 Error

MSB3073

  • 원인 : 언리얼 에디터를 킨채로 비주얼 스튜디오 빌드 시도

  • 해결 : 끄고 빌드 하자

    네비게이션 시스템 읽지못함??

    디버그 모드에서 뷰포트 에서 액터를 움직이면 발생했음

  • 원인 : 추정 불가
  • 해결 : 못함(다음에 네비게이션 모듈??을 추가한다음 해볼 예정)

0개의 댓글