From 40a9b7b7fb7d6e0312ae610b527d18fb2d708ba7 Mon Sep 17 00:00:00 2001 From: Malfurious Date: Mon, 12 Sep 2022 02:11:27 -0400 Subject: Decouple ViewModel and the BaseCharacter The ViewModel now consists of the camera, controls, and character driving logic. The actual character model has been removed and is expected to be externally present in the scene. An exported variable is added to reference the player object that the view model is to be controlling. This will allow us to place multiple characters in a scene and change the view model's perspective on the fly. Both of the current maps have been updated to implement this properly, and add an extra character on the enemy team. Signed-off-by: Malfurious --- assets/view_model/ViewModel.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'assets/view_model/ViewModel.gd') diff --git a/assets/view_model/ViewModel.gd b/assets/view_model/ViewModel.gd index cb85117..8a818a3 100644 --- a/assets/view_model/ViewModel.gd +++ b/assets/view_model/ViewModel.gd @@ -8,7 +8,7 @@ export var gravity = 35 var velocity = Vector3.ZERO var snap = Vector3.DOWN -onready var character = $BaseCharacter +export(NodePath) onready var character = get_node(character) onready var anchor = $Anchor onready var spring_arm = $Anchor/SpringArm onready var fps_label = $fps_label -- cgit v1.2.3 From 355dcc29148461dd79815e76fa1a5a887a44ecc3 Mon Sep 17 00:00:00 2001 From: Malfurious Date: Mon, 12 Sep 2022 02:37:04 -0400 Subject: ViewModel cycles characters on interact/ping Signed-off-by: Malfurious --- assets/view_model/ViewModel.gd | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'assets/view_model/ViewModel.gd') diff --git a/assets/view_model/ViewModel.gd b/assets/view_model/ViewModel.gd index 8a818a3..6d42a5a 100644 --- a/assets/view_model/ViewModel.gd +++ b/assets/view_model/ViewModel.gd @@ -64,6 +64,9 @@ func _physics_process(delta): # Handle extra player inputs character.is_firing = Input.is_action_pressed("fire") + + if Input.is_action_just_pressed("ping"): + cycle_parent() func _unhandled_input(event): # Implement mouse aim direction @@ -73,3 +76,13 @@ func _unhandled_input(event): spring_arm.rotation_degrees.y -= event.relative.x * aim_sensitivity spring_arm.rotation_degrees.y = wrapf(spring_arm.rotation_degrees.y, 0, 360) + +func cycle_parent(): + var parents = get_tree().get_nodes_in_group("players") + var idx = parents.find(character) + + if idx < 0 or idx == parents.size() - 1: + if parents.size() > 0: + character = parents[0] + else: + character = parents[idx + 1] -- cgit v1.2.3