tempknife
This commit is contained in:
parent
c970d1e417
commit
f5a7a84c84
4 changed files with 55 additions and 8 deletions
|
|
@ -290,6 +290,7 @@ grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
|
||||||
[node name="PanelContainer" type="PanelContainer" parent="HUD"]
|
[node name="PanelContainer" type="PanelContainer" parent="HUD"]
|
||||||
|
visible = false
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_right = 40.0
|
offset_right = 40.0
|
||||||
offset_bottom = 40.0
|
offset_bottom = 40.0
|
||||||
|
|
@ -446,7 +447,7 @@ spawn_path = NodePath("..")
|
||||||
[node name="StartingWeaponSpawner" type="Node" parent="WeaponSystem" node_paths=PackedStringArray("weapon_spawner")]
|
[node name="StartingWeaponSpawner" type="Node" parent="WeaponSystem" node_paths=PackedStringArray("weapon_spawner")]
|
||||||
script = ExtResource("17_ownlk")
|
script = ExtResource("17_ownlk")
|
||||||
starting_pistol = &"uid://djwjl8xll53vn"
|
starting_pistol = &"uid://djwjl8xll53vn"
|
||||||
starting_knife = &"uid://djwjl8xll53vn"
|
starting_knife = &"uid://ts4xccpkjd3g"
|
||||||
weapon_spawner = NodePath("../WeaponSpawner")
|
weapon_spawner = NodePath("../WeaponSpawner")
|
||||||
|
|
||||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||||
|
|
|
||||||
46
scenes/weapons/knife.tscn
Normal file
46
scenes/weapons/knife.tscn
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
[gd_scene load_steps=8 format=3 uid="uid://ts4xccpkjd3g"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://scripts/weapon_system/weapon_substate_machine.gd" id="1_2xf1r"]
|
||||||
|
[ext_resource type="Script" uid="uid://ofv4e3dsfe8" path="res://scripts/weapon_system/gun/idle_state.gd" id="2_c20fe"]
|
||||||
|
[ext_resource type="Script" uid="uid://vj13r83l3xyq" path="res://scripts/weapon_system/gun/semi_auto_shoot_state.gd" id="3_qf5yf"]
|
||||||
|
[ext_resource type="Script" uid="uid://hmekwp8444ao" path="res://scripts/weapon_system/gun/reload_state.gd" id="4_ndam4"]
|
||||||
|
[ext_resource type="Script" uid="uid://bmj0bwy2tlian" path="res://scripts/weapon_system/gun/intro_state.gd" id="5_qa48d"]
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id="Curve_6djxj"]
|
||||||
|
_limits = [0.0, 0.1, 0.0, 20.0]
|
||||||
|
metadata/_snap_enabled = true
|
||||||
|
metadata/_snap_count = 8
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id="Curve_qb62r"]
|
||||||
|
_limits = [-0.02, 0.02, 0.0, 20.0]
|
||||||
|
|
||||||
|
[node name="Knife" type="Node" node_paths=PackedStringArray("enter_state")]
|
||||||
|
script = ExtResource("1_2xf1r")
|
||||||
|
animation_prefix = &"baked_sp_"
|
||||||
|
visibility_target = &"sp"
|
||||||
|
max_ammo = 1000000000
|
||||||
|
ammo_mags = 0
|
||||||
|
slot = &"knife"
|
||||||
|
enter_state = NodePath("Intro")
|
||||||
|
metadata/_custom_type_script = "uid://e6lqknfl4ngt"
|
||||||
|
|
||||||
|
[node name="Idle" type="Node" parent="."]
|
||||||
|
script = ExtResource("2_c20fe")
|
||||||
|
|
||||||
|
[node name="Shoot" type="Node" parent="." node_paths=PackedStringArray("fire_timer")]
|
||||||
|
script = ExtResource("3_qf5yf")
|
||||||
|
vertical_curve = SubResource("Curve_6djxj")
|
||||||
|
horizontal_curve = SubResource("Curve_qb62r")
|
||||||
|
damage = 50
|
||||||
|
shoot_distance = 2.0
|
||||||
|
fire_timer = NodePath("../FireTimer")
|
||||||
|
|
||||||
|
[node name="Reload" type="Node" parent="."]
|
||||||
|
script = ExtResource("4_ndam4")
|
||||||
|
|
||||||
|
[node name="Intro" type="Node" parent="."]
|
||||||
|
script = ExtResource("5_qa48d")
|
||||||
|
|
||||||
|
[node name="FireTimer" type="Timer" parent="."]
|
||||||
|
wait_time = 0.15
|
||||||
|
one_shot = true
|
||||||
|
|
@ -226,21 +226,21 @@ func despawn_internal(path: NodePath) -> void:
|
||||||
|
|
||||||
get_node(path).queue_free()
|
get_node(path).queue_free()
|
||||||
|
|
||||||
func shoot(damage: int) -> void:
|
func shoot(damage: int,distance: float = 100) -> void:
|
||||||
if multiplayer.get_unique_id() == 1:
|
if multiplayer.get_unique_id() == 1:
|
||||||
shoot_internal(1,damage)
|
shoot_internal(1,damage,distance)
|
||||||
else:
|
else:
|
||||||
shoot_internal.rpc_id(1,multiplayer.get_unique_id(),damage)
|
shoot_internal.rpc_id(1,multiplayer.get_unique_id(),damage,distance)
|
||||||
|
|
||||||
@rpc("any_peer","call_local","reliable")
|
@rpc("any_peer","call_local","reliable")
|
||||||
func shoot_internal(id:int , damage: int) -> void:
|
func shoot_internal(id:int , damage: int, distance: float) -> void:
|
||||||
if multiplayer.is_server() == false:
|
if multiplayer.is_server() == false:
|
||||||
return
|
return
|
||||||
|
|
||||||
var player: Player = player_nodes[id]
|
var player: Player = player_nodes[id]
|
||||||
var player_camera: Camera3D = player.get_node("Camera3D")
|
var player_camera: Camera3D = player.get_node("Camera3D")
|
||||||
var space: PhysicsDirectSpaceState3D = player.get_world_3d().direct_space_state
|
var space: PhysicsDirectSpaceState3D = player.get_world_3d().direct_space_state
|
||||||
var endpoint: Vector3 = player_camera.global_position - player_camera.global_basis.z * 100
|
var endpoint: Vector3 = player_camera.global_position - player_camera.global_basis.z * distance
|
||||||
|
|
||||||
var ray = PhysicsRayQueryParameters3D.create(player_camera.global_position,endpoint,1)
|
var ray = PhysicsRayQueryParameters3D.create(player_camera.global_position,endpoint,1)
|
||||||
ray.exclude = [player.get_rid()]
|
ray.exclude = [player.get_rid()]
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@ extends WeaponState
|
||||||
@export var vertical_curve: Curve
|
@export var vertical_curve: Curve
|
||||||
@export var horizontal_curve: Curve
|
@export var horizontal_curve: Curve
|
||||||
|
|
||||||
@export var raycast: RayCast3D
|
|
||||||
@export var emptyable: bool
|
@export var emptyable: bool
|
||||||
@export var damage: int
|
@export var damage: int
|
||||||
|
@export var shoot_distance: float = 100
|
||||||
|
|
||||||
@export var fire_timer: Timer
|
@export var fire_timer: Timer
|
||||||
|
|
||||||
|
|
@ -38,7 +38,7 @@ func fire() -> void:
|
||||||
machine.animation_player.play(with_morphems("shoot"))
|
machine.animation_player.play(with_morphems("shoot"))
|
||||||
|
|
||||||
if is_multiplayer_authority():
|
if is_multiplayer_authority():
|
||||||
Session.shoot(damage)
|
Session.shoot(damage,shoot_distance)
|
||||||
|
|
||||||
fire_timer.start()
|
fire_timer.start()
|
||||||
machine.player_camera.recoil(horizontal_curve.sample(bullets_shot),vertical_curve.sample(bullets_shot))
|
machine.player_camera.recoil(horizontal_curve.sample(bullets_shot),vertical_curve.sample(bullets_shot))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue