WIP: Migrating to node3ds
This commit is contained in:
parent
95ee0542cf
commit
6441456788
@ -20,22 +20,30 @@ func _process(delta):
|
||||
# Record the latest server position with timestamp
|
||||
|
||||
global_rotation = owner_placeholder.global_rotation
|
||||
var server_pos = owner_placeholder.global_transform.origin
|
||||
pseudo_velocity = (server_pos - previous_position) / delta
|
||||
previous_position = server_pos # Store for next frame
|
||||
position_buffer.append([Time.get_ticks_msec() / 1000.0, server_pos])
|
||||
# -- This code is 100% generated by chatGPT and I can't understand it fully yet
|
||||
|
||||
|
||||
while position_buffer.size() > 2 and position_buffer[1][0] < (Time.get_ticks_msec() / 1000.0) - interpolation_delay:
|
||||
position_buffer.pop_front()
|
||||
if position_buffer.size() >= 2:
|
||||
var t_now = (Time.get_ticks_msec() / 1000.0) - interpolation_delay
|
||||
var prev_point = position_buffer[0]
|
||||
var next_point = position_buffer[1]
|
||||
var position_difference := global_position - owner_placeholder.global_position
|
||||
if is_vector_a_lower_than_b(position_difference, Vector3(0.3, 0.3, 0.3)) and \
|
||||
is_vector_a_lower_than_b(Vector3(-0.3, -0.3, -0.3), position_difference):
|
||||
var server_pos = owner_placeholder.global_transform.origin
|
||||
pseudo_velocity = (server_pos - previous_position) / delta
|
||||
previous_position = server_pos # Store for next frame
|
||||
position_buffer.append([Time.get_ticks_msec() / 1000.0, server_pos])
|
||||
|
||||
|
||||
while position_buffer.size() > 2 and position_buffer[1][0] < (Time.get_ticks_msec() / 1000.0) - interpolation_delay:
|
||||
position_buffer.pop_front()
|
||||
|
||||
if position_buffer.size() >= 2:
|
||||
var t_now = (Time.get_ticks_msec() / 1000.0) - interpolation_delay
|
||||
var prev_point = position_buffer[0]
|
||||
var next_point = position_buffer[1]
|
||||
|
||||
var alpha = (t_now - prev_point[0]) / (next_point[0] - prev_point[0])
|
||||
alpha = clamp(alpha, 0.0, 1.0)
|
||||
global_transform.origin = prev_point[1].lerp(next_point[1], alpha)
|
||||
var alpha = (t_now - prev_point[0]) / (next_point[0] - prev_point[0])
|
||||
alpha = clamp(alpha, 0.0, 1.0)
|
||||
global_transform.origin = prev_point[1].lerp(next_point[1], alpha)
|
||||
else:
|
||||
global_position = owner_placeholder.global_position
|
||||
|
||||
func _ready() -> void:
|
||||
set_multiplayer_authority(multiplayer.get_unique_id())
|
||||
@ -87,3 +95,6 @@ func _on_area_body_part_hit(damage: int) -> void:
|
||||
owner_placeholder.take_damage(damage)
|
||||
else:
|
||||
push_warning("Node doesn't know how to take the damage")
|
||||
|
||||
func is_vector_a_lower_than_b(vec_a: Vector3, vec_b: Vector3) -> bool:
|
||||
return vec_a.x < vec_b.x and vec_a.y < vec_b.y and vec_a.z < vec_b.z
|
||||
|
@ -769,7 +769,7 @@ fog_height = 15.06
|
||||
script = ExtResource("1_10iai")
|
||||
|
||||
[node name="World" type="Node3D" parent="."]
|
||||
transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0, 0, 0)
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
|
||||
|
||||
[node name="Floor" type="Node3D" parent="World"]
|
||||
transform = Transform3D(2, 0, 0, 0, 0.002625, -1.54869e-14, 0, 5.82867e-17, 0.697466, 12.1, -0.15, -4.9848)
|
||||
|
@ -62,7 +62,7 @@ func _physics_process(delta: float) -> void:
|
||||
|
||||
@rpc("authority", "call_remote", "unreliable_ordered")
|
||||
func update_position(real_position: Vector3):
|
||||
shared_node.global_position = lerp(shared_node.global_position, real_position, 2.0)
|
||||
shared_node.global_position = lerp(shared_node.global_position, real_position, 1.0)
|
||||
|
||||
@rpc("any_peer", "call_local", "unreliable")
|
||||
func jump():
|
||||
|
Loading…
x
Reference in New Issue
Block a user