prepare for multiple players
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
var main_camera: Camera3D
|
var main_camera: Camera3D
|
||||||
var player: Player
|
var players: Array[Player]
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user