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)

View File

@@ -57,6 +57,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.1915, 1.05, 0.125589)
entityId = "player"
movementType = 2
[node name="Camera3D" type="Camera3D" parent="."]
[node name="Camera3D" type="Camera3D" parent="." node_paths=PackedStringArray("targetNode")]
transform = Transform3D(-0.0384888, -0.605488, 0.794923, -0.0292824, 0.795854, 0.60478, -0.99883, -5.59445e-09, -0.0483616, 9.84926, 12.5195, 0)
script = ExtResource("7_tr4a0")
targetNode = NodePath("../Player")