diff options
author | nokoe <nokoe@mailbox.org> | 2024-06-22 22:35:34 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-06-23 19:31:11 +0200 |
commit | e165bdd15b04bca58ac3bc93bdd935bdc32e8786 (patch) | |
tree | 92a8628c81f65d23e58dda20345c3ac7a45b60d8 | |
parent | f84dc8d1d31fe183559ce3a54acf8d8c4825812a (diff) | |
download | hurrycurry-e165bdd15b04bca58ac3bc93bdd935bdc32e8786.tar hurrycurry-e165bdd15b04bca58ac3bc93bdd935bdc32e8786.tar.bz2 hurrycurry-e165bdd15b04bca58ac3bc93bdd935bdc32e8786.tar.zst |
default item with label
-rw-r--r-- | client/scripts/item.gd | 30 | ||||
-rw-r--r-- | client/scripts/player.gd | 20 |
2 files changed, 43 insertions, 7 deletions
diff --git a/client/scripts/item.gd b/client/scripts/item.gd new file mode 100644 index 00000000..c3fba434 --- /dev/null +++ b/client/scripts/item.gd @@ -0,0 +1,30 @@ +class_name Item +extends Node3D + +var owned_by: Node3D + +func _init(idx: int, owned_by_: Node3D): + match Multiplayer.item_names[idx]: + var t: + add_child(load("res://models/prefabs/map/bag.tscn").instantiate()) + var mesh = MeshInstance3D.new() + var text = TextMesh.new() + var mat = ORMMaterial3D.new() + text.text = t + text.font = SystemFont.new() + text.depth = 0 + mesh.mesh = text + mesh.position.y = 0.5 + mesh.scale = Vector3(3, 3, 3) + mat.billboard_mode = mat.BILLBOARD_ENABLED + mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED + text.material = mat + add_child(mesh) + owned_by = owned_by_ + +func _ready(): + position = owned_by.global_position + +func _process(delta): + position = lerp(position, owned_by.global_position, delta * 30.0) + diff --git a/client/scripts/player.gd b/client/scripts/player.gd index 6e07c3aa..a304fe29 100644 --- a/client/scripts/player.gd +++ b/client/scripts/player.gd @@ -21,7 +21,7 @@ func update_position(new_position: Vector2, new_rotation: float): position_ = new_position rotation.y = new_rotation -func take_item(tile: FullTile): +func take_item(tile: Floor): if hand != null: push_error("already holding an item") var i = tile.take_item() @@ -29,9 +29,15 @@ func take_item(tile: FullTile): push_error("tile is null") hand = i -func put_item(tile: FullTile): - var i = hand - if i == null: - push_error("holding nothing") - i = null - tile.put_item(hand) +func put_item(tile: Floor): + var i = remove_item() + tile.put_item(i) + +func _process(delta): + _anim_angle = fmod(_anim_angle + delta, TAU) + hand_base.position.y = HAND_BASE_POSITION.y + 0.05 * sin(_anim_angle * 3) + position_anim = lerp(position_anim, position_, delta * 10) + rotation_anim = lerp_angle(rotation_anim, rotation_, delta * 10) + position.x = position_anim.x + position.z = position_anim.y + rotation.y = rotation_anim |