30 lines
886 B
GDScript
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(3)
|
|
var player2 = get_parent().get_child(4)
|
|
|
|
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
|