Fixed multiplied shooting
parent
c5286fa173
commit
740bd67fea
|
@ -28,7 +28,6 @@ extends CharacterBody3D
|
||||||
|
|
||||||
var input_active = false
|
var input_active = false
|
||||||
|
|
||||||
|
|
||||||
var base_fov = 90
|
var base_fov = 90
|
||||||
var view_zoom_target := 1.0
|
var view_zoom_target := 1.0
|
||||||
var view_zoom_direction = true
|
var view_zoom_direction = true
|
||||||
|
@ -129,13 +128,14 @@ func _input(event) -> void:
|
||||||
aim(event)
|
aim(event)
|
||||||
|
|
||||||
if Input.is_action_just_pressed("trigger_primary"):
|
if Input.is_action_just_pressed("trigger_primary"):
|
||||||
weapon.rpc(&'trigger', 0, true)
|
weapon.trigger(0, true)
|
||||||
elif Input.is_action_just_released("trigger_primary"):
|
elif Input.is_action_just_released("trigger_primary"):
|
||||||
weapon.rpc(&'trigger', 0, false)
|
weapon.trigger(0, false)
|
||||||
if Input.is_action_just_pressed("trigger_secondary"):
|
if Input.is_action_just_pressed("trigger_secondary"):
|
||||||
weapon.rpc(&'trigger', 1, true)
|
weapon.trigger(1, true)
|
||||||
elif Input.is_action_just_released("trigger_secondary"):
|
elif Input.is_action_just_released("trigger_secondary"):
|
||||||
weapon.rpc(&'trigger', 1, false)
|
weapon.trigger(1, false)
|
||||||
|
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
if view_zoom_direction and view_zoom < view_zoom_target:
|
if view_zoom_direction and view_zoom < view_zoom_target:
|
||||||
|
@ -144,13 +144,13 @@ func _process(delta):
|
||||||
view_zoom = max(view_zoom_target, view_zoom - delta * 4)
|
view_zoom = max(view_zoom_target, view_zoom - delta * 4)
|
||||||
|
|
||||||
func damage(hp: int):
|
func damage(hp: int):
|
||||||
main.player_list.players[get_tree().network_peer.get_unique_id()].health -= hp
|
var target = main.player_list.players[self.get_network_master()]
|
||||||
|
target.health -= hp
|
||||||
if main.player_list.players[get_tree().network_peer.get_unique_id()].health <= 0:
|
if target.health <= 0: # int(name) is the player instance node name signifying owner's PID
|
||||||
die()
|
die()
|
||||||
|
|
||||||
func die():
|
func die():
|
||||||
main.chat.rpc(&'chat_notification', "Player " + main.player_list.players[get_tree().network_peer.get_unique_id()].name + " is dead")
|
main.chat.rpc(&'chat_notification', "Player " + main.player_list.players[self.get_network_master()].name + " is dead")
|
||||||
|
|
||||||
func _physics_process(delta):
|
func _physics_process(delta):
|
||||||
# rpc_unreliable(&'set_global_transform', global_transform)
|
# rpc_unreliable(&'set_global_transform', global_transform)
|
||||||
|
|
|
@ -17,6 +17,7 @@ var impact_player = preload("res://Assets/Effects/ImpactPlayer.tscn")
|
||||||
#enum Trigger {TRIGGER_PRIMARY, TRIGGER_SECONDARY}
|
#enum Trigger {TRIGGER_PRIMARY, TRIGGER_SECONDARY}
|
||||||
|
|
||||||
@remotesync func shoot():
|
@remotesync func shoot():
|
||||||
|
print("SHOOT from PID ", get_tree().get_network_unique_id(), " controlled by ", player.get_network_master())
|
||||||
var space_state = get_world_3d().direct_space_state
|
var space_state = get_world_3d().direct_space_state
|
||||||
|
|
||||||
var from = camera.get_global_transform().origin
|
var from = camera.get_global_transform().origin
|
||||||
|
@ -29,25 +30,27 @@ var impact_player = preload("res://Assets/Effects/ImpactPlayer.tscn")
|
||||||
|
|
||||||
if ray: # did we hit anything?
|
if ray: # did we hit anything?
|
||||||
if ray['collider'].has_method(&'damage'):
|
if ray['collider'].has_method(&'damage'):
|
||||||
if get_tree().network_peer.get_unique_id() == 1: # make sure this can only run on the server
|
if get_tree().get_network_unique_id() == 1: # make sure this can only run on the server
|
||||||
|
print("SHOT HIT ", ray['collider'])
|
||||||
ray['collider'].damage(10)
|
ray['collider'].damage(10)
|
||||||
|
|
||||||
impact_vfx = impact_player.instantiate()
|
impact_vfx = impact_player.instantiate()
|
||||||
else:
|
else:
|
||||||
impact_vfx = impact_wall.instantiate()
|
impact_vfx = impact_wall.instantiate()
|
||||||
|
|
||||||
impact_vfx.global_transform = impact_vfx.global_transform.looking_at(ray['normal'])
|
if impact_vfx:
|
||||||
impact_vfx.global_transform.origin = ray['position']
|
impact_vfx.global_transform = impact_vfx.global_transform.looking_at(ray['normal'])
|
||||||
get_tree().root.add_child(impact_vfx)
|
impact_vfx.global_transform.origin = ray['position']
|
||||||
|
get_tree().root.add_child(impact_vfx)
|
||||||
|
|
||||||
print(ray)
|
#print(ray)
|
||||||
|
|
||||||
@puppetsync func trigger(index: int, active: bool) -> void:
|
@puppetsync func trigger(index: int, active: bool) -> void:
|
||||||
#print("Weapon " + str(name) + ", Trigger " + str(index) + ", active: " + str(active))
|
#print("Weapon " + str(name) + ", Trigger " + str(index) + ", active: " + str(active))
|
||||||
|
|
||||||
if index == 0 and active and $Handgun/AnimationPlayer.is_playing() == false:
|
if index == 0 and active and $Handgun/AnimationPlayer.is_playing() == false:
|
||||||
|
|
||||||
rpc(&'shoot') # server will evaluate if I hit my target
|
rpc(&'shoot')
|
||||||
|
|
||||||
|
|
||||||
$Handgun/AnimationPlayer.play("Shoot", 0, 2.5)
|
$Handgun/AnimationPlayer.play("Shoot", 0, 2.5)
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,9 @@ structured_text_bidi_override_options = []
|
||||||
|
|
||||||
[node name="Players" type="Node3D" parent="."]
|
[node name="Players" type="Node3D" parent="."]
|
||||||
script = null
|
script = null
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_lock_": true
|
||||||
|
}
|
||||||
|
|
||||||
[node name="Map" parent="." instance=ExtResource( 1 )]
|
[node name="Map" parent="." instance=ExtResource( 1 )]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1)
|
||||||
|
@ -38,6 +41,7 @@ offset_left = -166.0
|
||||||
offset_bottom = 159.0
|
offset_bottom = 159.0
|
||||||
script = null
|
script = null
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
|
"_edit_lock_": true,
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in New Issue