Almost perfect
This commit is contained in:
@@ -2,7 +2,8 @@ class_name OverworldCamera extends Camera3D
|
|||||||
|
|
||||||
enum CameraMode { FREE, CENTERED }
|
enum CameraMode { FREE, CENTERED }
|
||||||
|
|
||||||
const COLLISION_MARGIN:float = 0.3
|
# const COLLISION_MARGIN:float = 0.1
|
||||||
|
const COLLISION_MARGIN:float = 0
|
||||||
|
|
||||||
@export_category("Target")
|
@export_category("Target")
|
||||||
@export var targetNode:Node3D = null
|
@export var targetNode:Node3D = null
|
||||||
@@ -10,7 +11,7 @@ const COLLISION_MARGIN:float = 0.3
|
|||||||
|
|
||||||
@export_category("Orbit")
|
@export_category("Orbit")
|
||||||
@export var distance:float = 7.0
|
@export var distance:float = 7.0
|
||||||
@export var minDistance:float = 2.0
|
@export var minDistance:float = 2.5
|
||||||
@export var orbitSensitivity:float = 144.0
|
@export var orbitSensitivity:float = 144.0
|
||||||
@export var orbitAcceleration:float = 600.0
|
@export var orbitAcceleration:float = 600.0
|
||||||
@export var orbitFriction:float = 10.0
|
@export var orbitFriction:float = 10.0
|
||||||
@@ -21,7 +22,7 @@ const COLLISION_MARGIN:float = 0.3
|
|||||||
@export var mouseSensitivity:float = 0.3
|
@export var mouseSensitivity:float = 0.3
|
||||||
|
|
||||||
@export_category("Auto-center")
|
@export_category("Auto-center")
|
||||||
@export var centeredDelay:float = 2.0
|
@export var centeredDelay:float = 1.0
|
||||||
@export var centeredFollowRate:float = 0.75
|
@export var centeredFollowRate:float = 0.75
|
||||||
@export var centeredMaxFollowRate:float = 1.0
|
@export var centeredMaxFollowRate:float = 1.0
|
||||||
@export var centeredPitch:float = 30.0
|
@export var centeredPitch:float = 30.0
|
||||||
@@ -131,7 +132,7 @@ func _process(delta:float) -> void:
|
|||||||
var actualDir:Vector3 = (finalPos - pivot).normalized()
|
var actualDir:Vector3 = (finalPos - pivot).normalized()
|
||||||
var targetPitch:float = rad_to_deg(asin(clamp(actualDir.y, -1.0, 1.0)))
|
var targetPitch:float = rad_to_deg(asin(clamp(actualDir.y, -1.0, 1.0)))
|
||||||
var targetYaw:float = rad_to_deg(atan2(actualDir.x, actualDir.z))
|
var targetYaw:float = rad_to_deg(atan2(actualDir.x, actualDir.z))
|
||||||
var feedbackRate:float = minf(40.0 * delta, 1.0)
|
var feedbackRate:float = minf(120.0 * delta, 1.0)
|
||||||
_pitch = lerpf(_pitch, targetPitch, feedbackRate)
|
_pitch = lerpf(_pitch, targetPitch, feedbackRate)
|
||||||
var feedbackYawDiff:float = fposmod(targetYaw - _yaw + 180.0, 360.0) - 180.0
|
var feedbackYawDiff:float = fposmod(targetYaw - _yaw + 180.0, 360.0) - 180.0
|
||||||
_yaw += lerpf(0.0, feedbackYawDiff, feedbackRate)
|
_yaw += lerpf(0.0, feedbackYawDiff, feedbackRate)
|
||||||
|
|||||||
Reference in New Issue
Block a user