-
Notifications
You must be signed in to change notification settings - Fork 1
/
main_camera.gd
45 lines (32 loc) · 1.14 KB
/
main_camera.gd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
extends Camera2D
@export var player: BallsPlayer = null
var _area: Area2D
var _directors: Array[Area2D] = []
func _ready():
_area = $Area2D
await get_parent().ready
_area.reparent(get_parent())
player = CheckpointManager.get_player()
CheckpointManager.player_spawned.connect(_on_player_spawned.bind())
CheckpointManager.player_despawned.connect(_on_player_despawned.bind())
func _physics_process(_delta):
var middle = Vector2.ZERO
if player: middle = player.ball_a.global_position.lerp(player.ball_b.global_position, 0.5)
_area.global_position = middle
var focus_position = Vector2.ZERO
if _directors.size() > 0:
var col_shape: CollisionShape2D = _directors[-1].get_node("CollisionShape2D")
focus_position = col_shape.global_position
else:
focus_position = middle
global_position = focus_position
func _on_area_2d_area_exited(area: Area2D):
_directors.erase(area)
print(_directors.size())
func _on_area_2d_area_entered(area: Area2D):
_directors.push_back(area)
print(_directors.size())
func _on_player_spawned(new_player: BallsPlayer):
player = (new_player)
func _on_player_despawned(_new_player: BallsPlayer):
player = null