diff options
author | nokoe <nokoe@mailbox.org> | 2024-07-08 19:33:02 +0200 |
---|---|---|
committer | nokoe <nokoe@mailbox.org> | 2024-07-08 19:33:49 +0200 |
commit | 1bebf8ade214ce221a1bc8b39f0ed2b09ae147e6 (patch) | |
tree | 3589a349eca8188d09b0b68c7b1c4be9136b44cf /client/player | |
parent | aeeb376c1faceacb8856add20a820271cc3254b3 (diff) | |
download | hurrycurry-1bebf8ade214ce221a1bc8b39f0ed2b09ae147e6.tar hurrycurry-1bebf8ade214ce221a1bc8b39f0ed2b09ae147e6.tar.bz2 hurrycurry-1bebf8ade214ce221a1bc8b39f0ed2b09ae147e6.tar.zst |
move interact target marker to player
Diffstat (limited to 'client/player')
-rw-r--r-- | client/player/controllable_player.gd | 13 | ||||
-rw-r--r-- | client/player/player.gd | 23 |
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 |