Compare commits

..

No commits in common. "feature/player-features" and "develop" have entirely different histories.

6 changed files with 19 additions and 42 deletions

View File

@ -13,7 +13,6 @@ height = 1.5
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_qlkab"]
radius = 0.35
height = 2.25001
[sub_resource type="SphereMesh" id="SphereMesh_vu2l8"]
radius = 0.35
@ -25,7 +24,7 @@ shader = ExtResource("3_rakxt")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_0n7pd"]
shader = ExtResource("3_rakxt")
[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("camera", "neck", "player_avatar_face", "body", "head", "player_hud", "flashlight")]
[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("camera", "neck", "player_avatar_face", "body", "head", "player_hud")]
collision_mask = 242
script = ExtResource("1_bv7t4")
camera = NodePath("Neck/Camera3D")
@ -34,7 +33,6 @@ player_avatar_face = NodePath("Neck/Camera3D/PlayerAvatarFace")
body = NodePath("Body")
head = NodePath("Neck/Head")
player_hud = NodePath("PlayerHUD")
flashlight = NodePath("Neck/Camera3D/Flashlight")
[node name="PlayerTag" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.26654, 0)
@ -48,7 +46,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0)
mesh = SubResource("CapsuleMesh_v7b3h")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.125501, 0)
shape = SubResource("CapsuleShape3D_qlkab")
[node name="Neck" type="Node3D" parent="."]
@ -69,9 +66,6 @@ shaded = true
double_sided = false
texture = ExtResource("2_omgn1")
[node name="Flashlight" type="SpotLight3D" parent="Neck/Camera3D"]
spot_range = 9.0
[node name="Head" type="MeshInstance3D" parent="Neck"]
mesh = SubResource("SphereMesh_vu2l8")

View File

@ -11,32 +11,35 @@ var steam_id: int = 0
@export_category("Player")
@export_range(1, 35, 1) var speed: float = 5.0
@export_range(10, 400, 1) var acceleration: float = 100.0
@export_range(0.1, 3.0, 0.1) var jump_height: float = 1.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_category("Node References")
@export var camera: Camera3D
@export var neck: Node3D
@export var player_avatar_face: Sprite3D
@export var body: MeshInstance3D
@export var head: MeshInstance3D
@export var player_hud: CanvasLayer
@export var flashlight: SpotLight3D
var jumping: bool = false
var is_using_joystick: bool = false
var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity")
var move_dir: Vector2 # Input direction for movement
var look_dir: Vector2 # Input direction for look/aim
var walk_vel: Vector3 # Walking velocity
var grav_vel: Vector3 # Gravity velocity
var jump_vel: Vector3 # Jumping velocity
var current_ship: Ship
var previous_global_position: Vector3
var previous_global_rotation: Vector3
var previous_head_vert_rotation: Vector3
var neck_rotation_sync: Vector3
var light_state: bool
func _ready() -> void:
@ -74,11 +77,8 @@ func _input(event):
if Input.is_action_just_pressed("jump") and !is_piloting:
jumping = true
if Input.is_action_just_released("toggle_flashlight"):
handle_flashlight(event)
func _physics_process(delta: float) -> void:
if !is_network_authority: return
if is_piloting and current_ship != null:
@ -110,17 +110,17 @@ func _process(delta: float) -> void:
NetworkManager.sync_property_to_all(network_uuid, "neck_rotation_sync", neck_rotation_sync)
previous_global_rotation = neck.rotation
func capture_mouse() -> void:
if !is_network_authority: return
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
func release_mouse() -> void:
if !is_network_authority: return
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
func _rotate_camera(sens_mod: float = 1.0) -> void:
if !is_network_authority: return
var camera_sens_final = camera_sens
@ -131,7 +131,7 @@ func _rotate_camera(sens_mod: float = 1.0) -> void:
neck.rotation.x = clamp(neck.rotation.x - look_dir.y * camera_sens_final * sens_mod, -1.5, 1.5)
neck_rotation_sync = neck.rotation
func _handle_joypad_camera_rotation(delta: float, sens_mod: float = 1.0) -> void:
var joypad_dir: Vector2 = Input.get_vector("look_left","look_right","look_up","look_down")
if joypad_dir.length() > 0:
@ -139,7 +139,7 @@ func _handle_joypad_camera_rotation(delta: float, sens_mod: float = 1.0) -> void
_rotate_camera(sens_mod)
look_dir = Vector2.ZERO
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")
@ -148,12 +148,12 @@ func walk(delta: float) -> Vector3:
walk_vel = walk_vel.move_toward(walk_dir * speed * move_dir.length(), acceleration * delta)
return walk_vel
func _gravity(delta: float) -> Vector3:
grav_vel = Vector3.ZERO if is_on_floor() else grav_vel.move_toward(Vector3(0, velocity.y - gravity, 0), gravity * delta)
return grav_vel
func _jump(delta: float) -> Vector3:
if jumping:
if is_on_floor(): jump_vel = Vector3(0, sqrt(4 * jump_height * gravity), 0)
@ -162,25 +162,14 @@ func _jump(delta: float) -> Vector3:
jump_vel = Vector3.ZERO if is_on_floor() else jump_vel.move_toward(Vector3.ZERO, gravity * delta)
return jump_vel
func handle_flashlight(event):
if !flashlight.visible:
flashlight.show()
light_state = true
NetworkManager.sync_property_to_all(network_uuid, "light_state", light_state)
elif flashlight.visible:
flashlight.hide()
light_state = false
NetworkManager.sync_property_to_all(network_uuid, "light_state", light_state)
func player_entered_ship(ship_global_position: Vector3, ship: Ship):
if !is_network_authority: return
current_ship = ship
print(ship.ship_id)
print(global_position)
func player_exited_ship(ship_global_position: Vector3, ship: Ship):
if !is_network_authority: return
current_ship = null

View File

@ -121,8 +121,8 @@ func send_network_update():
elif !NetworkManager.is_host and ship_is_piloted and piloting_player.steam_id == NetworkManager.steam_id:
# Client is piloting, send updates to the host
NetworkManager.sync_property_to_all(network_uuid, "global_position", predicted_position)
NetworkManager.sync_property_to_all(network_uuid, "global_rotation", predicted_rotation)
NetworkManager.sync_property_to_all_except_host(network_uuid, "global_position", predicted_position)
NetworkManager.sync_property_to_all_except_host(network_uuid, "global_rotation", predicted_rotation)
func receive_global_position_update(value: Vector3):
target_position = value

View File

@ -135,12 +135,6 @@ interact={
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
]
}
toggle_flashlight={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":14,"pressure":0.0,"pressed":true,"script":null)
]
}
[layer_names]