36 lines
839 B
GDScript
36 lines
839 B
GDScript
class_name MainCamera
|
|
extends Camera3D
|
|
|
|
@export var height_offset: float = 0.5
|
|
@export var distance: float = 50
|
|
@export var angle_degrees: Vector3 = Vector3(-35, -45, 0)
|
|
@export var aim_offset_factor: float = 0.2
|
|
|
|
var _floor_height: float = 0
|
|
|
|
|
|
func _ready() -> void:
|
|
Referencer.main_camera = self
|
|
|
|
|
|
func _process(_delta: float) -> void:
|
|
_follow()
|
|
|
|
|
|
func _follow() -> void:
|
|
var player_position := Referencer.player.global_position
|
|
if Referencer.player.is_on_floor():
|
|
_floor_height = player_position.y
|
|
player_position.y = _floor_height
|
|
|
|
var follow_position := (
|
|
player_position + Referencer.player.aim_offset * aim_offset_factor
|
|
)
|
|
|
|
global_rotation_degrees = angle_degrees
|
|
global_position = (
|
|
follow_position + Vector3.UP * height_offset + transform.basis.z * distance
|
|
)
|
|
|
|
Debugger.circle("follow_position", follow_position)
|