Clamp Zoom
This commit is contained in:
		
							parent
							
								
									d07a08793b
								
							
						
					
					
						commit
						10a672dc8f
					
				
							
								
								
									
										
											BIN
										
									
								
								GravityStomp/Content/Debug/Camera/TestCamera.umap
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								GravityStomp/Content/Debug/Camera/TestCamera.umap
									 (Stored with Git LFS)
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							@ -10,6 +10,8 @@ AGSCameraActor::AGSCameraActor()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    PanSpeed = 100.0f;
 | 
					    PanSpeed = 100.0f;
 | 
				
			||||||
    ZoomSpeed = 100.0f;
 | 
					    ZoomSpeed = 100.0f;
 | 
				
			||||||
 | 
					    MinZoom = 2666;
 | 
				
			||||||
 | 
					    MaxZoom = 5000;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -36,11 +38,13 @@ void AGSCameraActor::Tick(float DeltaSeconds)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    FVector CurrLocation = GetActorLocation();
 | 
					    FVector CurrLocation = GetActorLocation();
 | 
				
			||||||
    float ZoomMove = ZoomDirection * ZoomSpeed * DeltaSeconds;
 | 
					    float ZoomMove = ZoomDirection * ZoomSpeed * DeltaSeconds;
 | 
				
			||||||
 | 
					    float NewZoom = CurrLocation.X + ZoomMove;
 | 
				
			||||||
 | 
					    NewZoom = ClampZoom(NewZoom);
 | 
				
			||||||
    FVector2D PanMove = PanDirection * PanSpeed * DeltaSeconds;
 | 
					    FVector2D PanMove = PanDirection * PanSpeed * DeltaSeconds;
 | 
				
			||||||
    FVector2D NewPan = FVector2D(CurrLocation.Y + PanMove.X, CurrLocation.Z + PanMove.Y);
 | 
					    FVector2D NewPan = FVector2D(CurrLocation.Y + PanMove.X, CurrLocation.Z + PanMove.Y);
 | 
				
			||||||
    NewPan = ClampCameraLocationToStageBounds(NewPan, ScreenBoundingBox);
 | 
					    NewPan = ClampCameraLocationToStageBounds(NewPan, ScreenBoundingBox);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    FVector NewLocation = FVector(CurrLocation.X + ZoomMove, NewPan.X, NewPan.Y);
 | 
					    FVector NewLocation = FVector(NewZoom, NewPan.X, NewPan.Y);
 | 
				
			||||||
    SetActorLocation(NewLocation);
 | 
					    SetActorLocation(NewLocation);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -113,3 +117,8 @@ FVector2D AGSCameraActor::ClampCameraLocationToStageBounds(FVector2D CameraLocat
 | 
				
			|||||||
    float FinalY = FMath::Clamp(CameraLocation.Y, MinStageY, MaxStageY);
 | 
					    float FinalY = FMath::Clamp(CameraLocation.Y, MinStageY, MaxStageY);
 | 
				
			||||||
    return FVector2D(FinalX, FinalY);
 | 
					    return FVector2D(FinalX, FinalY);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					float AGSCameraActor::ClampZoom(float Zoom) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return FMath::Clamp(Zoom, -MaxZoom, -MinZoom);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -21,6 +21,12 @@ public:
 | 
				
			|||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera Settings")
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera Settings")
 | 
				
			||||||
	float ZoomSpeed;
 | 
						float ZoomSpeed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera Settings")
 | 
				
			||||||
 | 
						float MinZoom;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera Settings")
 | 
				
			||||||
 | 
						float MaxZoom;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	UPROPERTY(BlueprintReadWrite)
 | 
						UPROPERTY(BlueprintReadWrite)
 | 
				
			||||||
	FVector2D PanDirection;
 | 
						FVector2D PanDirection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -42,4 +48,6 @@ private:
 | 
				
			|||||||
	FVector GetWorldLocationFromScreenCoords(float InX, float InY) const;
 | 
						FVector GetWorldLocationFromScreenCoords(float InX, float InY) const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	FVector2D ClampCameraLocationToStageBounds(FVector2D CameraLocation, FBox2D ScreenBox) const;
 | 
						FVector2D ClampCameraLocationToStageBounds(FVector2D CameraLocation, FBox2D ScreenBox) const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						float ClampZoom(float Zoom) const;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user