Overworld Camera
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user