Overworld Camera

This commit is contained in:
2026-04-04 21:44:03 -05:00
parent f822ce219f
commit f041b4ca40
2 changed files with 53 additions and 2 deletions

View File

@@ -1 +1,51 @@
extends Camera3D
class_name OverworldCamera extends Camera3D
enum TargetType {
FREE,
FOLLOW_NODE
}
enum FollowType {
INSTANT,
SMOOTH
}
@export_category("Follow Target")
@export var targetNode:Node3D = null
@export var targetType:TargetType = TargetType.FOLLOW_NODE
@export var targetPosition:Vector3 = Vector3.ZERO
@export_category("Follow Settings")
@export var targetOffset:Vector3 = Vector3.ZERO
@export var positionOffset:Vector3 = Vector3(3, 10, 0)
@export var pixelPerfect:bool = true
func getTargetLookAt() -> Vector3:
var targetPos:Vector3
if TargetType.FREE:
targetPos = self.targetPosition
elif TargetType.FOLLOW_NODE:
if targetNode == null:
targetPos = self.global_transform.origin + self.global_transform.basis.z
else:
targetPos = targetNode.global_transform.origin
targetPos += targetOffset
return targetPos
func getTargetPosition() -> Vector3:
var targetPos = getTargetLookAt()
targetPos += positionOffset
return targetPos
func _process(_delta: float) -> void:
var targetPos = getTargetPosition()
global_transform.origin = targetPos
var lookAt = getTargetLookAt()
look_at(lookAt, Vector3.UP)
func _enter_tree() -> void:
var targetPos = getTargetPosition()
global_transform.origin = targetPos
var lookAt = getTargetLookAt()
look_at(lookAt, Vector3.UP)