Game Programming/언리얼
-
카메라 회전 보간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(); ..
-
HUD Aim을 총알 시작점으로 했을 때 문제점 해결Game Programming/언리얼 2023. 10. 5. 16:54
라인 트레이스의 시작 위치를 HUD의 월드좌표로 하면 실제 총과 피격 위치가 맞지 않는 문제가 발생했다. if (FireHit.bBlockingHit) { BeamEndPoint = FireHit.Location; } 그래서, 허드에서부터 출발한 총알의 피격 위치를 구하고 FHitResult WeaponTraceHit; const FVector WeaponTraceStart{ SocketTransform.GetLocation() }; const FVector WeaponTraceEnd{ BeamEndPoint }; GetWorld()->LineTraceSingleByChannel( WeaponTraceHit, WeaponTraceStart, WeaponTraceEnd, ECollisionChannel::..
-
HUD Aim 방향으로 총알 발사Game Programming/언리얼 2023. 10. 5. 16:38
if (GEngine && GEngine->GameViewport) { GEngine->GameViewport->GetViewportSize(ViewportsSize); } FVector2D CrosshairLocation(ViewportsSize.X / 2.f, ViewportsSize.Y / 2.f); CrosshairLocation.Y -= 50.f; FVector CrosshairWorldPosition; FVector CrosshairWorldDirection; bool bScreenToWorld = UGameplayStatics::DeprojectScreenToWorld(UGameplayStatics::GetPlayerController(this, 0), CrosshairLocation, Cr..
-
CrossHair HUD 추가Game Programming/언리얼 2023. 10. 5. 16:18
블루 프린트 클래스의 HUD를 추가한다. HUD를 그리는 이벤트를 받으면 X, Y좌표로 나눠서 Screen Center Vector2D에 저장한다. Screen Center Vector2D에 Y축 오프셋을 더하기 위해 벡터로 만든 후 계산을 해 Crosshair Location Vector2D에 저장한다. Crosshair Location을 가져와 텍스쳐의 픽셀의 크기를 고려 해 X, Y의 위치를 잡아준다. Texture에서 텍스쳐를 선택할 수 있고, Texture UWidth, Height에서 Full UV좌표를 설정 할 수 있다. 전체 블루프린트이다.