Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
CameraCollisionComponent.h
이 파일의 문서화 페이지로 가기
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Components/ActorComponent.h"
8#include "CameraCollisionComponent.generated.h"
9
10
11UCLASS(ClassGroup=(Camera), meta=(BlueprintSpawnableComponent))
12class CK_UE_API UCameraCollisionComponent : public UActorComponent, public ICameraBehaviorInterface
13{
14 GENERATED_BODY()
15
16public:
17 UCameraCollisionComponent();
18
19protected:
20 virtual void UpdateCameraBehavior(AGameCameraManager* CameraManager, float DeltaTime) override { }
21
22public:
23 // Pivot→DesiredCamera 방향으로 스피어 캐스트를 수행하고 충돌 정보를 내부에 저장.
24 // SubjectActor는 무시할 피사체(플레이어 폰)를 전달.
25 void UpdateCameraCollision(FVector Pivot, FVector AdjustedLocation, FRotator Rotation, const AActor* SubjectActor = nullptr);
26
27 // 현재 프레임에 충돌이 발생했는지 여부
28 FORCEINLINE bool IsColliding() const
29 {
30 return bIsColliding;
31 }
32
33 // 충돌 지점이 카메라 전방(피벗 방향)에 있으면 true, 후방이면 false
34 FORCEINLINE bool IsCollisionInFront() const
35 {
36 return bCollisionInFront;
37 }
38
39 // 충돌을 반영한 보정된 카메라 월드 위치
40 FORCEINLINE FVector GetAdjustedCameraLocation() const
41 {
42 return AdjustedCameraLocation;
43 }
44
45 // DesiredCameraLocation 기준, 충돌 지점까지의 오프셋을 카메라 로컬 공간(X=전방, Y=우, Z=상)으로 반환
46 FORCEINLINE FVector GetCollisionOffsetInCameraSpace() const
47 {
48 return CollisionOffsetInCameraSpace;
49 }
50
51 FORCEINLINE float GetSphereRadius() const
52 {
53 return SphereRadius;
54 }
55
56protected:
57 UPROPERTY(EditDefaultsOnly, Category = "Camera|Collision", meta = (ClampMin = "1.0"))
58 float SphereRadius = 20.0f;
59
60 UPROPERTY(EditDefaultsOnly, Category = "Camera|Collision")
61 TEnumAsByte<ECollisionChannel> CollisionChannel = ECC_Camera;
62
63private:
64 bool bIsColliding = false;
65 bool bCollisionInFront = false;
66 FVector AdjustedCameraLocation = FVector::ZeroVector;
67 FVector CollisionOffsetInCameraSpace = FVector::ZeroVector;
68 FCollisionQueryParams QueryParams = FCollisionQueryParams(FName(TEXT("CameraCollision")), false);;
69};
Definition GameCameraManager.h:28
Definition CameraBehaviorInterface.h:21