mirror of
https://gitlab.com/open-fpsz/open-fpsz.git
synced 2026-07-16 00:44:50 +00:00
✨ jetpack stuttering, physics updates, deps upgrades
This commit is contained in:
parent
36168ed18c
commit
bbf551f3fa
101 changed files with 2302 additions and 1740 deletions
|
|
@ -37,18 +37,19 @@ signal respawned(player: Player)
|
|||
|
||||
@export_category("Parameters")
|
||||
@export var ground_speed:float = 48 / 3.6 # m/s
|
||||
@export var aerial_control_force:int = 400
|
||||
@export var aerial_control_force:int = 320
|
||||
@export var jump_height:float = 1.0
|
||||
@export var max_floor_angle:float = 60
|
||||
|
||||
@export_group("Jetpack")
|
||||
@export var energy: float = 100.0
|
||||
@export var energy_charge_rate:float = 25 # energy per second
|
||||
@export var energy_drain_rate:float = 25 # energy per second
|
||||
@export var energy_max:float = 100.
|
||||
@export var energy: float = energy_max
|
||||
@export var energy_charge_rate:float = 25 # energy per second
|
||||
@export var energy_drain_rate:float = 30 # energy per second
|
||||
@export var jetpack_force_factor:float = 2.
|
||||
@export var jetpack_horizontal_force:float = 600
|
||||
@export var jetpack_vertical_force:float = 1200
|
||||
@export var jetpack_horizontal_force:float = 700
|
||||
@export var jetpack_vertical_force:float = 900
|
||||
@export_range(0., 1., .01) var stutter_treshold:float = .3
|
||||
|
||||
@export_group("State")
|
||||
@export var input: PlayerInputController
|
||||
|
|
@ -60,6 +61,8 @@ signal respawned(player: Player)
|
|||
var g:float = ProjectSettings.get_setting("physics/3d/default_gravity") # in m/s²
|
||||
var gravity:Vector3 = g * ProjectSettings.get_setting("physics/3d/default_gravity_vector")
|
||||
var _jumping:bool = false
|
||||
var _stutter:bool = false
|
||||
var _stutter_treshold:int = int(energy_max * .3)
|
||||
|
||||
static var pawn_player:Player
|
||||
|
||||
|
|
@ -79,9 +82,9 @@ func set_username(new_username:String) -> void:
|
|||
username_changed.emit(username)
|
||||
|
||||
func set_peer_id(new_peer_id:int) -> void:
|
||||
remove_from_group(str(peer_id))
|
||||
#remove_from_group(str(peer_id))
|
||||
peer_id = new_peer_id
|
||||
add_to_group(str(peer_id))
|
||||
#add_to_group(str(peer_id))
|
||||
peer_id_changed.emit(peer_id)
|
||||
|
||||
# Maximum duration for pumping force when throwing a flag, in seconds.
|
||||
|
|
@ -130,6 +133,9 @@ func _ready() -> void:
|
|||
func(_source: Node, target: Node, amount: int) -> void:
|
||||
target.health.damage(amount, 0))
|
||||
|
||||
input.camera_rotation.x = rotation.x
|
||||
input.camera_rotation.y = rotation.y
|
||||
|
||||
if _is_pawn():
|
||||
pawn_player = self
|
||||
camera.current = true
|
||||
|
|
@ -165,12 +171,12 @@ func _process(_delta:float) -> void:
|
|||
|
||||
if not is_alive():
|
||||
return
|
||||
|
||||
|
||||
# compute target rotation from input.camera_rotation
|
||||
var target_euler := Vector3(input.camera_rotation.x, input.camera_rotation.y, 0.0)
|
||||
# smoothly interpolate rotation of pivot node towards target rotation
|
||||
pivot.global_transform.basis = pivot.global_transform.basis.slerp(Basis.from_euler(target_euler), .6)
|
||||
|
||||
|
||||
if not _is_pawn():
|
||||
# compute target rotation from input.camera_rotation
|
||||
var tp_target_euler := Vector3(.0, input.camera_rotation.y + PI, 0.0)
|
||||
|
|
@ -193,7 +199,8 @@ func _is_pawn() -> bool:
|
|||
return true
|
||||
|
||||
func _on_throw(pressed: bool) -> void:
|
||||
if pressed:
|
||||
var flag: Flag = flag_carry_component._flag
|
||||
if pressed and flag and flag.state == flag.FlagState.TAKEN:
|
||||
throw_timer.start(throw_duration_max)
|
||||
hud.throw_progress.visible = true
|
||||
else:
|
||||
|
|
@ -230,40 +237,46 @@ func _handle_aerial_control(direction:Vector3) -> void:
|
|||
apply_force(direction * aerial_control_force)
|
||||
|
||||
func _handle_jetpack(direction:Vector3) -> void:
|
||||
if input.jetting and energy > 0:
|
||||
if input.jetting and energy > 0 and not _stutter:
|
||||
var up_vector:Vector3 = Vector3.UP * jetpack_vertical_force * jetpack_force_factor
|
||||
var side_vector:Vector3 = direction * jetpack_horizontal_force * jetpack_force_factor
|
||||
apply_force(up_vector + side_vector)
|
||||
for particle: GPUParticles3D in _jetpack_particles:
|
||||
particle.emitting = true
|
||||
|
||||
func _handle_ski() -> void:
|
||||
# set ski state
|
||||
physics_material_override.friction = !input.skiing
|
||||
# zero-damping ski
|
||||
linear_damp_mode = DAMP_MODE_REPLACE if is_on_floor() and input.skiing else DAMP_MODE_COMBINE
|
||||
|
||||
func _update_jetpack_energy(delta:float) -> void:
|
||||
if input.jetting and energy > 0:
|
||||
energy -= energy_drain_rate * delta
|
||||
if input.jetting:
|
||||
if energy == 0:
|
||||
_stutter = true
|
||||
elif energy > _stutter_treshold:
|
||||
_stutter = false
|
||||
|
||||
if not _stutter:
|
||||
energy -= energy_drain_rate * delta
|
||||
else:
|
||||
energy += energy_charge_rate * delta
|
||||
else:
|
||||
energy += energy_charge_rate * delta
|
||||
|
||||
energy = clamp(energy, 0, energy_max)
|
||||
hud.energy_bar.value = energy
|
||||
|
||||
func _integrate_forces(_state:PhysicsDirectBodyState3D) -> void:
|
||||
# skip if player is dead
|
||||
if not is_alive():
|
||||
return
|
||||
# retrieve user's direction vector
|
||||
var _input_dir:Vector2 = input.direction
|
||||
# compute direction in local space
|
||||
var _direction:Vector3 = (transform.basis * Vector3(_input_dir.x, 0, _input_dir.y)).normalized()
|
||||
var _direction:Vector3 = (transform.basis * Vector3(
|
||||
input.direction.x, 0, input.direction.y)).normalized()
|
||||
|
||||
# adjust direction based on pivot rotation
|
||||
_direction = _direction.rotated(Vector3.UP, pivot.rotation.y)
|
||||
|
||||
# zero-damping ski
|
||||
if is_on_floor() and input.skiing:
|
||||
linear_damp = lerp(linear_damp, .0, .1)
|
||||
else:
|
||||
linear_damp = lerp(
|
||||
linear_damp,
|
||||
ProjectSettings.get_setting("physics/3d/default_linear_damp") + .05,
|
||||
.2)
|
||||
|
||||
if is_on_floor():
|
||||
if not _direction.is_zero_approx() and not input.skiing:
|
||||
|
|
@ -284,11 +297,9 @@ func _integrate_forces(_state:PhysicsDirectBodyState3D) -> void:
|
|||
|
||||
_jumping = false
|
||||
|
||||
# set ski state
|
||||
physics_material_override.friction = !input.skiing
|
||||
|
||||
_handle_aerial_control(_direction)
|
||||
_handle_jetpack(_direction)
|
||||
_handle_ski()
|
||||
|
||||
func _update_third_person_animations() -> void:
|
||||
if not is_alive():
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=44 format=3 uid="uid://cbhx1xme0sb7k"]
|
||||
[gd_scene load_steps=43 format=3 uid="uid://cbhx1xme0sb7k"]
|
||||
|
||||
[ext_resource type="Script" path="res://entities/player/player.gd" id="1_y2i7h"]
|
||||
[ext_resource type="PackedScene" uid="uid://bbeecp3jusppn" path="res://interfaces/hud/iffs/IFF.tscn" id="2_s5wgp"]
|
||||
|
|
@ -22,35 +22,8 @@ resource_local_to_scene = true
|
|||
bounce = 1.0
|
||||
absorbent = true
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_h0a20"]
|
||||
radius = 0.25
|
||||
|
||||
[sub_resource type="Animation" id="Animation_eoxkv"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Pivot:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0.625, 0)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Pivot:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_yqgrk"]
|
||||
resource_name = "death"
|
||||
|
|
@ -237,7 +210,6 @@ properties/3/replication_mode = 2
|
|||
radius = 0.2
|
||||
|
||||
[node name="Player" type="RigidBody3D" node_paths=PackedStringArray("iff", "health", "flag_carry_component", "walkable_surface_sensor", "hud", "inventory", "tp_mesh", "third_person", "pivot", "camera", "input")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
collision_mask = 2147483649
|
||||
collision_priority = 9.0
|
||||
axis_lock_angular_x = true
|
||||
|
|
@ -245,11 +217,10 @@ axis_lock_angular_y = true
|
|||
axis_lock_angular_z = true
|
||||
mass = 80.0
|
||||
physics_material_override = SubResource("PhysicsMaterial_clur0")
|
||||
gravity_scale = 1.2
|
||||
center_of_mass_mode = 1
|
||||
center_of_mass = Vector3(0, 1, 0)
|
||||
can_sleep = false
|
||||
continuous_cd = true
|
||||
linear_damp_mode = 1
|
||||
linear_damp = 0.15
|
||||
script = ExtResource("1_y2i7h")
|
||||
iff = NodePath("IFF")
|
||||
health = NodePath("Health")
|
||||
|
|
@ -265,30 +236,23 @@ max_floor_angle = 80.0
|
|||
input = NodePath("Inputs")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
shape = ExtResource("4_8kvcy")
|
||||
|
||||
[node name="IFF" parent="." instance=ExtResource("2_s5wgp")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.1, 0)
|
||||
fill = Color(0, 1, 0, 1)
|
||||
|
||||
[node name="Health" type="Area3D" parent="." node_paths=PackedStringArray("collider")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
script = ExtResource("4_55muf")
|
||||
collider = NodePath("CollisionShape3D")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Health"]
|
||||
shape = SubResource("CapsuleShape3D_h0a20")
|
||||
|
||||
[node name="HUD" parent="." instance=ExtResource("3_ccety")]
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_hg307")
|
||||
}
|
||||
autoplay = "RESET"
|
||||
playback_default_blend_time = 0.05
|
||||
shape = ExtResource("4_8kvcy")
|
||||
|
||||
[node name="Pivot" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.625, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.75, 0)
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="Pivot"]
|
||||
fov = 90.0
|
||||
|
|
@ -318,7 +282,17 @@ mesh = NodePath("FlagMesh")
|
|||
|
||||
[node name="FlagMesh" parent="Pivot/FlagCarryComponent" instance=ExtResource("18_7nkei")]
|
||||
|
||||
[node name="HUD" parent="." instance=ExtResource("3_ccety")]
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_hg307")
|
||||
}
|
||||
autoplay = "RESET"
|
||||
playback_default_blend_time = 0.05
|
||||
|
||||
[node name="ThirdPerson" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
visible = false
|
||||
|
||||
[node name="Mesh" parent="ThirdPerson" node_paths=PackedStringArray("spine_ik_target_attachment") instance=ExtResource("8_eiy7q")]
|
||||
|
|
@ -335,39 +309,42 @@ bones/8/rotation = Quaternion(0.675761, -0.399581, 0.409695, 0.464577)
|
|||
bones/10/rotation = Quaternion(0.212344, -0.0870591, -0.287653, 0.929831)
|
||||
bones/12/rotation = Quaternion(0.0811501, 0.206806, -0.754068, 0.618084)
|
||||
bones/14/rotation = Quaternion(0.00943715, 0.0971687, -0.145046, 0.984597)
|
||||
bones/20/rotation = Quaternion(-0.123455, 0.0248346, 0.23344, 0.964183)
|
||||
bones/24/rotation = Quaternion(0.0450683, -0.000817796, 0.0508488, 0.997689)
|
||||
bones/26/rotation = Quaternion(0.100545, -1.16532e-07, 0.00792588, 0.994901)
|
||||
bones/28/rotation = Quaternion(0.288532, -1.83796e-07, 0.0227447, 0.9572)
|
||||
bones/32/rotation = Quaternion(0.00674081, -0.0316083, 0.105474, 0.993897)
|
||||
bones/34/rotation = Quaternion(0.780684, 4.23384e-08, 0.0615407, 0.621889)
|
||||
bones/36/rotation = Quaternion(0.580978, -1.56224e-07, 0.0457976, 0.81263)
|
||||
bones/40/rotation = Quaternion(0.0913739, 0.113691, 0.100265, 0.984211)
|
||||
bones/42/rotation = Quaternion(0.836841, 4.40546e-07, 0.0659669, 0.543457)
|
||||
bones/44/rotation = Quaternion(0.633142, 6.48257e-09, 0.04991, 0.772425)
|
||||
bones/50/rotation = Quaternion(0.729888, -4.88266e-08, 0.0575362, 0.681141)
|
||||
bones/52/rotation = Quaternion(0.624011, -9.63141e-08, 0.04919, 0.779865)
|
||||
bones/16/rotation = Quaternion(0.202944, -0.189284, -0.192306, 0.941278)
|
||||
bones/18/rotation = Quaternion(0.00767626, 0.0143343, 0.192225, 0.981216)
|
||||
bones/20/rotation = Quaternion(-0.123455, 0.0248345, 0.23344, 0.964183)
|
||||
bones/24/rotation = Quaternion(0.0450684, -0.000817573, 0.0508488, 0.997689)
|
||||
bones/26/rotation = Quaternion(0.100545, -2.54424e-07, 0.00792588, 0.994901)
|
||||
bones/28/rotation = Quaternion(0.288532, -7.96814e-08, 0.0227446, 0.9572)
|
||||
bones/32/rotation = Quaternion(0.0067407, -0.0316083, 0.105474, 0.993897)
|
||||
bones/34/rotation = Quaternion(0.780684, 6.72079e-08, 0.0615403, 0.621889)
|
||||
bones/36/rotation = Quaternion(0.580978, -9.89914e-08, 0.0457976, 0.81263)
|
||||
bones/40/rotation = Quaternion(0.091374, 0.113691, 0.100265, 0.984211)
|
||||
bones/42/rotation = Quaternion(0.836841, 2.02021e-07, 0.0659672, 0.543457)
|
||||
bones/44/rotation = Quaternion(0.633142, -1.16317e-07, 0.0499098, 0.772425)
|
||||
bones/48/rotation = Quaternion(0.0427938, 0.15521, 0.085814, 0.983216)
|
||||
bones/50/rotation = Quaternion(0.729888, -5.53666e-08, 0.0575362, 0.681141)
|
||||
bones/52/rotation = Quaternion(0.624012, -7.97555e-08, 0.0491901, 0.779865)
|
||||
bones/56/rotation = Quaternion(-0.0254885, 0.0439755, -0.00910637, 0.998666)
|
||||
bones/58/rotation = Quaternion(-0.0119802, 0.289956, -0.0527053, 0.955513)
|
||||
bones/58/rotation = Quaternion(-0.0119802, 0.289956, -0.0527054, 0.955513)
|
||||
bones/62/rotation = Quaternion(0.689943, 0.375565, -0.410267, 0.463261)
|
||||
bones/64/rotation = Quaternion(0.337746, -0.290519, 0.159479, 0.880961)
|
||||
bones/66/rotation = Quaternion(0.540371, -0.580679, 0.406779, 0.453147)
|
||||
bones/68/position = Vector3(-1.77636e-17, 0.240718, 0)
|
||||
bones/68/rotation = Quaternion(0.0150529, -0.289001, 0.0720108, 0.954498)
|
||||
bones/70/rotation = Quaternion(0.155965, 0.0109114, -0.00107202, 0.987702)
|
||||
bones/72/rotation = Quaternion(0.563923, 4.19095e-08, -0.0577906, 0.823803)
|
||||
bones/72/rotation = Quaternion(0.563923, 3.95812e-08, -0.0577906, 0.823803)
|
||||
bones/74/rotation = Quaternion(0.285209, 0.0197164, -0.0936782, 0.953673)
|
||||
bones/78/rotation = Quaternion(0.057484, -0.0698946, -0.0100642, 0.995846)
|
||||
bones/80/rotation = Quaternion(0.433127, 5.44824e-08, -0.0443866, 0.900239)
|
||||
bones/82/rotation = Quaternion(0.274138, -1.97906e-08, -0.0280937, 0.96128)
|
||||
bones/80/rotation = Quaternion(0.433127, 5.45988e-08, -0.0443866, 0.900239)
|
||||
bones/82/rotation = Quaternion(0.274138, -1.89757e-08, -0.0280937, 0.96128)
|
||||
bones/86/rotation = Quaternion(0.244152, 0.0521336, 0.176446, 0.952123)
|
||||
bones/88/rotation = Quaternion(0.0146391, -1.48637e-07, -0.121951, 0.992428)
|
||||
bones/88/rotation = Quaternion(0.0146391, -1.48753e-07, -0.121951, 0.992428)
|
||||
bones/90/rotation = Quaternion(-0.147655, -0.0737763, 0.197847, 0.966236)
|
||||
bones/94/rotation = Quaternion(0.180682, 0.0832945, -0.00387314, 0.980001)
|
||||
bones/96/rotation = Quaternion(0.245651, -6.35919e-08, -0.0251742, 0.969032)
|
||||
bones/98/rotation = Quaternion(0.246432, 7.6252e-08, -0.0252543, 0.968831)
|
||||
bones/94/rotation = Quaternion(0.180682, 0.0832945, -0.00387313, 0.980001)
|
||||
bones/96/rotation = Quaternion(0.245651, -6.3621e-08, -0.0251742, 0.969032)
|
||||
bones/98/rotation = Quaternion(0.246432, 7.61938e-08, -0.0252543, 0.968831)
|
||||
bones/102/rotation = Quaternion(0.179829, 0.0890365, -0.000307644, 0.97966)
|
||||
bones/104/rotation = Quaternion(0.388149, 1.28057e-07, -0.0397774, 0.920738)
|
||||
bones/104/rotation = Quaternion(0.388149, 1.27126e-07, -0.0397774, 0.920738)
|
||||
bones/106/rotation = Quaternion(0.372324, -1.37021e-07, -0.0381557, 0.927318)
|
||||
bones/110/rotation = Quaternion(-0.167577, 0.223934, 0.958827, 0.0492099)
|
||||
bones/112/rotation = Quaternion(-0.466474, -0.0088339, -0.0232928, 0.884184)
|
||||
|
|
@ -375,11 +352,11 @@ bones/114/rotation = Quaternion(0.575696, 0.0793941, -0.0250592, 0.813414)
|
|||
bones/116/rotation = Quaternion(0.355062, 0.0493655, 0.0246355, 0.933213)
|
||||
bones/120/rotation = Quaternion(0.115252, 0.282473, 0.945749, -0.111737)
|
||||
bones/122/rotation = Quaternion(-0.494906, -0.0647935, 0.0183973, 0.866332)
|
||||
bones/124/rotation = Quaternion(0.417677, -0.0431149, 0.00625689, 0.90755)
|
||||
bones/124/rotation = Quaternion(0.417677, -0.0431149, 0.0062569, 0.90755)
|
||||
bones/126/rotation = Quaternion(0.397818, -0.0427722, -0.00601182, 0.916447)
|
||||
|
||||
[node name="HandAttachment" parent="ThirdPerson/Mesh/Node/Skeleton3D" index="0"]
|
||||
transform = Transform3D(-0.152214, 0.0548832, 0.986823, 0.933991, 0.334546, 0.125459, -0.323252, 0.94078, -0.102183, -0.261612, 1.14328, 0.0896011)
|
||||
transform = Transform3D(-0.152214, 0.0548831, 0.986823, 0.933991, 0.334546, 0.125459, -0.323252, 0.94078, -0.102183, -0.261612, 1.14328, 0.0896011)
|
||||
|
||||
[node name="grip" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/SpaceGun/Mesh/Armature/Skeleton3D" index="0"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.6068e-14, -1.19209e-07, 9.53674e-07)
|
||||
|
|
@ -399,20 +376,32 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.6068e-14, -1.19209e-07, 9.5
|
|||
[node name="sides" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/SpaceGun/Mesh/Armature/Skeleton3D/sides" index="0"]
|
||||
layers = 2
|
||||
|
||||
[node name="BarrelsInner" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/ChainGun/Armature/Skeleton3D" index="0"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.692504, 1.30946)
|
||||
|
||||
[node name="BarrelsInner" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/ChainGun/Armature/Skeleton3D/BarrelsInner" index="0"]
|
||||
layers = 2
|
||||
|
||||
[node name="BarrelsOuter" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/ChainGun/Armature/Skeleton3D" index="1"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.692504, 1.30946)
|
||||
|
||||
[node name="BarrelsOuter" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/ChainGun/Armature/Skeleton3D/BarrelsOuter" index="0"]
|
||||
layers = 2
|
||||
|
||||
[node name="Base" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/ChainGun/Armature/Skeleton3D" index="2"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.692504, 1.30946)
|
||||
|
||||
[node name="Base" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/ChainGun/Armature/Skeleton3D/Base" index="0"]
|
||||
layers = 2
|
||||
|
||||
[node name="Grip" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/ChainGun/Armature/Skeleton3D" index="3"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.692504, 1.30946)
|
||||
|
||||
[node name="Grip" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/ChainGun/Armature/Skeleton3D/Grip" index="0"]
|
||||
layers = 2
|
||||
|
||||
[node name="Barrels" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/ChainGun" index="2"]
|
||||
transform = Transform3D(-1, 0, 8.9407e-08, 8.47504e-08, 0, 1, 0, 1, -3.72529e-09, -1.19209e-07, 4.76837e-07, -0.55315)
|
||||
transform = Transform3D(-1, -7.45058e-09, 8.98726e-08, 8.42847e-08, 0, 1, 0, 1, 0, 1.19209e-07, 4.76837e-07, -0.55315)
|
||||
|
||||
[node name="Skeleton3D" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/GrenadeLauncher/Armature" index="0"]
|
||||
bones/0/rotation = Quaternion(0, 0.707107, 0.707107, 0)
|
||||
|
|
@ -420,12 +409,21 @@ bones/1/rotation = Quaternion(0, 0.707107, 0.707107, 0)
|
|||
bones/2/rotation = Quaternion(0, 0.707107, 0.707107, 0)
|
||||
bones/3/rotation = Quaternion(0, 0.707107, 0.707107, 0)
|
||||
|
||||
[node name="barrel" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/GrenadeLauncher/Armature/Skeleton3D" index="0"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.19209e-07, 0)
|
||||
|
||||
[node name="barrel" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/GrenadeLauncher/Armature/Skeleton3D/barrel" index="0"]
|
||||
layers = 2
|
||||
|
||||
[node name="grip" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/GrenadeLauncher/Armature/Skeleton3D" index="1"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.082471, -0.0653242)
|
||||
|
||||
[node name="grip" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/GrenadeLauncher/Armature/Skeleton3D/grip" index="0"]
|
||||
layers = 2
|
||||
|
||||
[node name="main" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/GrenadeLauncher/Armature/Skeleton3D" index="2"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.19209e-07, 0)
|
||||
|
||||
[node name="main" parent="ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/GrenadeLauncher/Armature/Skeleton3D/main" index="0"]
|
||||
layers = 2
|
||||
|
||||
|
|
@ -478,10 +476,9 @@ script = ExtResource("18_v4iu1")
|
|||
replication_config = SubResource("SceneReplicationConfig_5j4ew")
|
||||
|
||||
[node name="WalkableSurfaceSensor" type="ShapeCast3D" parent="."]
|
||||
transform = Transform3D(1.05, 0, 0, 0, 1.05, 0, 0, 0, 1.05, 0, -0.85, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.085, 0)
|
||||
shape = SubResource("SphereShape3D_hwe6e")
|
||||
target_position = Vector3(0, 0, 0)
|
||||
max_results = 16
|
||||
collision_mask = 2147483648
|
||||
|
||||
[connection signal="child_entered_tree" from="Pivot/Inventory" to="Pivot/Inventory" method="_on_child_entered_tree"]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue