prepare for multiple players

This commit is contained in:
2025-02-27 19:27:03 +10:00
parent 5498b3dc21
commit 26753492c9
4 changed files with 21 additions and 16 deletions

View File

@@ -16,14 +16,14 @@ func _ready() -> void:
func _process(delta: float) -> void: func _process(delta: float) -> void:
if not Referencer.player or not Referencer.main_camera: if not Referencer.players or not Referencer.main_camera:
var mouse_pos := get_viewport().get_mouse_position() var mouse_pos := get_viewport().get_mouse_position()
_base.position = mouse_pos - _base.size / 2 _base.position = mouse_pos - _base.size / 2
_bat.visible = false _bat.visible = false
return return
_bat.visible = true _bat.visible = true
var player := Referencer.player var player := Referencer.players[0]
var cursor_pos_world := player.attack.global_position + player.aiming.aim_offset var cursor_pos_world := player.attack.global_position + player.aiming.aim_offset
var cursor_pos_screen := Referencer.main_camera.unproject_position(cursor_pos_world) var cursor_pos_screen := Referencer.main_camera.unproject_position(cursor_pos_world)

View File

@@ -1,4 +1,4 @@
extends Node extends Node
var main_camera: Camera3D var main_camera: Camera3D
var player: Player var players: Array[Player]

View File

@@ -17,22 +17,30 @@ func _ready() -> void:
func _process(delta: float) -> void: func _process(delta: float) -> void:
_follow(delta) var follow_position: Vector3 = Vector3.ZERO
for player in Referencer.players:
follow_position += _follow(player, delta)
follow_position /= Referencer.players.size()
global_rotation_degrees = _angle_degrees
global_position = (
follow_position + Vector3.UP * _height_offset + transform.basis.z * _distance
)
func _follow(delta: float) -> void: func _follow(player: Player, delta: float) -> Vector3:
var player_position := Referencer.player.global_position var player_position := player.global_position
if Referencer.player.is_on_floor(): if player.is_on_floor():
_floor_height = player_position.y _floor_height = player_position.y
player_position.y = _floor_height + Projectile.HEIGHT player_position.y = _floor_height + Projectile.HEIGHT
if Inputer.mode == Inputer.Mode.KB_MOUSE: if Inputer.mode == Inputer.Mode.KB_MOUSE:
_aim_offset = Referencer.player.aiming.aim_offset _aim_offset = player.aiming.aim_offset
else: else:
var new_aim_offset := ( var new_aim_offset := (
Vector3.ZERO Vector3.ZERO
if Referencer.player.aiming.aim_input.length() == 0 if player.aiming.aim_input.length() == 0
else Referencer.player.aiming.aim_offset else player.aiming.aim_offset
) )
_aim_offset = _aim_offset.lerp(new_aim_offset, _aim_damping * delta) _aim_offset = _aim_offset.lerp(new_aim_offset, _aim_damping * delta)
@@ -48,9 +56,6 @@ func _follow(delta: float) -> void:
) )
) )
global_rotation_degrees = _angle_degrees Debugger.circle("follow_position" + str(player.index), follow_position)
global_position = (
follow_position + Vector3.UP * _height_offset + transform.basis.z * _distance
)
Debugger.circle("follow_position", follow_position) return follow_position

View File

@@ -15,7 +15,7 @@ var _debug_collision_shapes := DebugCollisionShapes.new()
func _ready() -> void: func _ready() -> void:
_respawn_point = global_position _respawn_point = global_position
Referencer.player = self Referencer.players.append(self)
_debug_collision_shapes.init(get_children(), self, _collision_debug_material) _debug_collision_shapes.init(get_children(), self, _collision_debug_material)