Files
Five-Nights-At-Akers/Scripts/Logic/cPlayerCamera.gd
2026-03-24 12:56:35 -07:00

48 lines
1.7 KiB
GDScript

extends Camera2D
var screenWidth = ProjectSettings.get_setting("display/window/size/viewport_width")
var screenHeight = ProjectSettings.get_setting("display/window/size/viewport_height")
@export var scrollArea : int
@export var scrollSpeed : float
@export var scrollDivisions : int
@export var officeSprite : Sprite2D
var officeWidth : int
var officeHeight : int
var distance : float
var divisionSize : float
var speedMultiplier : float
func _ready() -> void:
make_current()
print("Camera Running")
if scrollDivisions == 0:
scrollDivisions = 1
divisionSize = scrollArea / scrollDivisions
if officeSprite:
officeWidth = officeSprite.texture.get_width() * officeSprite.scale.x
position.x = officeSprite.position.x + (officeWidth - screenWidth) / 2
officeHeight = officeSprite.texture.get_height() * officeSprite.scale.y
position.y = officeSprite.position.y + (officeHeight - screenHeight) / 2
func _process(delta : float) -> void:
if get_local_mouse_position().x < scrollArea:
distance = scrollArea - get_local_mouse_position().x
getSpeedMultiplier()
position.x -= (scrollSpeed * speedMultiplier) * delta
if get_local_mouse_position().x > screenWidth - scrollArea:
distance = get_local_mouse_position().x - (screenWidth - scrollArea)
getSpeedMultiplier()
position.x += (scrollSpeed * speedMultiplier) * delta
if officeSprite:
if position.x < officeSprite.position.x:
position.x = officeSprite.position.x
if (position.x - officeSprite.position.x) + screenWidth > officeWidth:
position.x = officeWidth - screenWidth + officeSprite.position.x
func getSpeedMultiplier() -> void:
speedMultiplier = clamp(floor(distance / divisionSize) + 1, 1, scrollDivisions)
speedMultiplier /= scrollDivisions