diff --git a/assets/core/networking/scripts/NetworkManager.gd b/assets/core/networking/scripts/NetworkManager.gd index 5e1692f..f02a2b3 100644 --- a/assets/core/networking/scripts/NetworkManager.gd +++ b/assets/core/networking/scripts/NetworkManager.gd @@ -372,6 +372,7 @@ func _on_game_started(): var player: Player = player_scene.instantiate() player.name = "Player_" + str(member["steam_id"]) player.username = Steam.getFriendPersonaName(member["steam_id"]) + player.steam_id = member["steam_id"] if member["steam_id"] == steam_id: player.is_network_authority = true diff --git a/assets/core/player-controller/scenes/player.tscn b/assets/core/player-controller/scenes/player.tscn index 1ab7490..2ed1c1f 100644 --- a/assets/core/player-controller/scenes/player.tscn +++ b/assets/core/player-controller/scenes/player.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=11 format=3 uid="uid://c6w0ivy4hetrl"] +[gd_scene load_steps=12 format=3 uid="uid://c6w0ivy4hetrl"] [ext_resource type="Script" path="res://assets/core/player-controller/scripts/player.gd" id="1_bv7t4"] +[ext_resource type="Texture2D" uid="uid://fwub8fvl2u4i" path="res://addons/ingameconsole/ps1hagrid.png" id="2_omgn1"] [ext_resource type="Script" path="res://assets/core/player-controller/scripts/player_interacter.gd" id="2_wvu3d"] [ext_resource type="Script" path="res://assets/core/player-controller/scripts/player_hud.gd" id="3_02ne1"] [ext_resource type="Shader" path="res://assets/core/player-controller/scenes/inverted_crosshair.gdshader" id="3_rakxt"] @@ -22,10 +23,12 @@ shader = ExtResource("3_rakxt") [sub_resource type="ShaderMaterial" id="ShaderMaterial_0n7pd"] shader = ExtResource("3_rakxt") -[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("camera")] +[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("camera", "neck", "player_avatar_decal")] collision_mask = 242 script = ExtResource("1_bv7t4") camera = NodePath("Neck/Camera3D") +neck = NodePath("Neck") +player_avatar_decal = NodePath("Neck/PlayerAvatarDecal") [node name="PlayerTag" type="Label3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.26654, 0) @@ -52,6 +55,13 @@ collision_mask = 256 script = ExtResource("2_wvu3d") player = NodePath("../../..") +[node name="PlayerAvatarDecal" type="Decal" parent="Neck"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, -0.0323475, -0.316656) +size = Vector3(0.45, 0.4, 0.45) +texture_albedo = ExtResource("2_omgn1") +upper_fade = 0.08 +lower_fade = 0.08 + [node name="PlayerHUD" type="CanvasLayer" parent="." node_paths=PackedStringArray("fps_label")] script = ExtResource("3_02ne1") fps_label = NodePath("Debug/HBoxContainer/VBoxContainer/MarginContainer/FPSLabel") diff --git a/assets/core/player-controller/scripts/player.gd b/assets/core/player-controller/scripts/player.gd index 175029d..71f6ef9 100644 --- a/assets/core/player-controller/scripts/player.gd +++ b/assets/core/player-controller/scripts/player.gd @@ -16,6 +16,8 @@ var steam_id: int = 0 @export_range(0.1, 3.0, 0.1, "or_greater") var camera_sens: float = 1.0 @export_range(0.1, 3.0, 0.1, "or_greater") var joystick_camera_sens_multiplier: float = 5.0 @export var camera: Camera3D +@export var neck: Node3D +@export var player_avatar_decal: Decal var jumping: bool = false var is_using_joystick: bool = false @@ -39,6 +41,7 @@ func _ready() -> void: player_tag = get_node("PlayerTag") player_tag.text = username + player_avatar_decal.texture_albedo = await NetworkManager.get_player_avatar(steam_id) if is_network_authority: camera.make_current() @@ -109,8 +112,8 @@ func _rotate_camera(sens_mod: float = 1.0) -> void: if is_using_joystick: camera_sens_final = camera_sens * joystick_camera_sens_multiplier - camera.rotation.y -= look_dir.x * camera_sens_final * sens_mod - camera.rotation.x = clamp(camera.rotation.x - look_dir.y * camera_sens_final * sens_mod, -1.5, 1.5) + rotation.y -= look_dir.x * camera_sens_final * sens_mod + neck.rotation.x = clamp(neck.rotation.x - look_dir.y * camera_sens_final * sens_mod, -1.5, 1.5) func _handle_joypad_camera_rotation(delta: float, sens_mod: float = 1.0) -> void: @@ -124,7 +127,7 @@ func _handle_joypad_camera_rotation(delta: float, sens_mod: float = 1.0) -> void func walk(delta: float) -> Vector3: if Input.mouse_mode == Input.MOUSE_MODE_CAPTURED: move_dir = Input.get_vector("move_left", "move_right", "move_forwards", "move_backwards") - var _forward: Vector3 = camera.global_transform.basis * Vector3(move_dir.x, 0, move_dir.y) + var _forward: Vector3 = neck.global_transform.basis * Vector3(move_dir.x, 0, move_dir.y) var walk_dir: Vector3 = Vector3(_forward.x, 0, _forward.z).normalized() walk_vel = walk_vel.move_toward(walk_dir * speed * move_dir.length(), acceleration * delta) return walk_vel