bodypartfighter/Ingame/CameraFocus.gd
2020-02-02 16:21:28 +01:00

30 lines
886 B
GDScript

extends Spatial
onready var camera = get_node("Camera")
const DISTANCE_MOD = 0.2
const FOV_MOD = 0.2
var _look_at_vec = Vector3(0, 0, -1)
var _x_axis = Vector3(1, 0, 0)
func _ready():
var cam_rot = camera.rotation_degrees
_look_at_vec = _look_at_vec.rotated(Vector3(0, 1, 0), cam_rot.y * PI/180)
_x_axis = _x_axis.rotated(Vector3(0, 1, 0), cam_rot.y * PI/180)
_look_at_vec = _look_at_vec.rotated(_x_axis, cam_rot.x * PI/180)
func _process(delta: float) -> void:
var player1 = get_parent().get_child(4)
var player2 = get_parent().get_child(5)
if not player1 and player2: return
var center = player2.transform.origin + (player1.transform.origin - player2.transform.origin) / 2.0
var distance = (player1.transform.origin - player2.transform.origin).length()
camera.fov = distance * FOV_MOD + 60.0
transform.origin = center - _look_at_vec * distance * DISTANCE_MOD