summaryrefslogtreecommitdiff
path: root/client/player
diff options
context:
space:
mode:
Diffstat (limited to 'client/player')
-rw-r--r--client/player/controllable_player.gd13
-rw-r--r--client/player/player.gd23
2 files changed, 22 insertions, 14 deletions
diff --git a/client/player/controllable_player.gd b/client/player/controllable_player.gd
index 17f6693f..93b05e9a 100644
--- a/client/player/controllable_player.gd
+++ b/client/player/controllable_player.gd
@@ -59,6 +59,7 @@ func _input(_event):
const MAX_DT = 1./50.
func _process(delta):
+ marker.position = Global.interpolate(marker.position, marker_target, delta * 30.)
while delta > 0.001:
var dt = min(delta, MAX_DT)
_process_movement(dt)
@@ -73,8 +74,8 @@ func _process_movement(delta):
input *= 0
else:
target = Vector2i(
- int(floor(position.x + sin(rotation.y))),
- int(floor(position.z + cos(rotation.y)))
+ int(floor(movement_base.position.x + sin(movement_base.rotation.y))),
+ int(floor(movement_base.position.z + cos(movement_base.rotation.y)))
)
interact()
var was_boosting = boosting
@@ -153,16 +154,16 @@ func interact():
return
var tile = game.map.get_tile_instance(target)
if tile != null:
- game.marker.set_interactive(game.get_tile_interactive(target))
- game.marker.visible = true
- game.marker_target = tile.item_base.global_position
+ marker.set_interactive(game.get_tile_interactive(target))
+ marker.visible = true
+ marker_target = tile.item_base.global_position
if Input.is_action_just_pressed("interact"):
game.mp.send_tile_interact(target, true)
tile.interact()
elif Input.is_action_just_released("interact"):
game.mp.send_tile_interact(target, false)
else:
- game.marker.visible = false
+ marker.visible = false
func set_input_enabled(b: bool):
enable_input = b
diff --git a/client/player/player.gd b/client/player/player.gd
index c52cc6e0..c7a12598 100644
--- a/client/player/player.gd
+++ b/client/player/player.gd
@@ -30,10 +30,14 @@ var boosting := false
var walking := false
var username: String
+var movement_base: Node3D = Node3D.new()
+
var character: Character = preload("res://player/character/character.tscn").instantiate()
var chat_bubble: ChatBubble = preload("res://player/chat_bubble.tscn").instantiate()
var item_bubble: ItemBubble = preload("res://player/item_bubble.tscn").instantiate()
var effect: Effect = preload("res://player/effect.tscn").instantiate()
+var marker: Marker = preload("res://player/marker.tscn").instantiate()
+var marker_target = Vector3(0, 0, 0)
var clear_timer: Timer = Timer.new()
@@ -46,7 +50,8 @@ var _anim_angle: float = 0.0
const HAND_BASE_POSITION: Vector3 = Vector3(0, .25, .4)
func _init(_id: int, new_name: String, pos: Vector2, new_character_idx: int, new_game: Game):
- add_child(character)
+ add_child(movement_base)
+ movement_base.add_child(character)
position_ = pos
position_anim = pos
name = new_name
@@ -54,15 +59,17 @@ func _init(_id: int, new_name: String, pos: Vector2, new_character_idx: int, new
username = new_name
hand_base.position = HAND_BASE_POSITION
- add_child(hand_base)
+ movement_base.add_child(hand_base)
- add_child(chat_bubble)
- add_child(item_bubble)
- add_child(effect)
+ movement_base.add_child(chat_bubble)
+ movement_base.add_child(item_bubble)
+ movement_base.add_child(effect)
clear_timer.one_shot = true
clear_timer.wait_time = 5.
add_child(clear_timer)
+ marker.visible = false
+ add_child(marker)
character_idx = new_character_idx
@@ -131,9 +138,9 @@ func _process(delta):
hand_base.position.y = HAND_BASE_POSITION.y + 0.05 * sin(_anim_angle * 3)
position_anim = Global.interpolate(position_anim, position_, delta * 10)
rotation_anim = Global.interpolate_angle(rotation_anim, rotation_, delta * 10)
- position.x = position_anim.x
- position.z = position_anim.y
- rotation.y = rotation_anim
+ movement_base.position.x = position_anim.x
+ movement_base.position.z = position_anim.y
+ movement_base.rotation.y = rotation_anim
walking = walking or position_.distance_squared_to(position_anim) > 0.001
character.walking = walking
character.boosting = boosting