actual initial commit lmao
This commit is contained in:
69
entities/grabject.gd
Normal file
69
entities/grabject.gd
Normal file
@@ -0,0 +1,69 @@
|
||||
extends RigidBody3D
|
||||
|
||||
var grabject : bool = true
|
||||
var low_height : bool = false
|
||||
|
||||
@export var model : String = "mug"
|
||||
@export var impact_loud : bool = false
|
||||
@export var impact_lethal : bool = false
|
||||
@export var impact_annoyonly : bool = false
|
||||
@export var impact_sound : String = "genericimpact"
|
||||
@export var prompt : String = "Grab mug"
|
||||
@export var icon : String = "hand"
|
||||
var icon_offset : float = 0.0
|
||||
var collided_this_frame : bool = false
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
if model == "mug" or "mug_full":
|
||||
$mesh_mugge.visible = true
|
||||
$shape_mugge.disabled = false
|
||||
$shape_mugge_secondary.disabled = false
|
||||
icon_offset = $shape_mugge.shape.height / 2
|
||||
if model == "mug_full":
|
||||
$mesh_mugge/coffee.visible = true
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(_delta: float) -> void:
|
||||
pass
|
||||
|
||||
func _physics_process(_delta: float) -> void:
|
||||
if linear_velocity.length() < 0.025:
|
||||
$SleepTimer.start(2)
|
||||
|
||||
func sleep():
|
||||
freeze = true
|
||||
|
||||
func hold(delay):
|
||||
freeze = true
|
||||
$DelayTimer.start(delay)
|
||||
|
||||
func hold2():
|
||||
set_collision_layer_value(1, false)
|
||||
if model == "mug" or model == "mug_full":
|
||||
$mesh_mugge.visible = false
|
||||
if model == "mug_full":
|
||||
mug_spill(global_transform.origin)
|
||||
global_transform.origin.y += 500
|
||||
|
||||
func unhold(spawnlocation):
|
||||
global_transform.origin = spawnlocation
|
||||
freeze = false
|
||||
if model == "mug" or model == "mug_full":
|
||||
$mesh_mugge.visible = true
|
||||
|
||||
func throw(spawnlocation, direction, force):
|
||||
unhold(spawnlocation)
|
||||
apply_central_impulse(direction * force)
|
||||
|
||||
func handle_collision(_hush):
|
||||
var colliders = get_colliding_bodies()
|
||||
for body in colliders:
|
||||
print(body.get_name())
|
||||
if !collided_this_frame and body.get("npc"):
|
||||
body.impact()
|
||||
|
||||
func mug_spill(_location):
|
||||
$mesh_mugge/coffee.visible = false
|
||||
model = "mug"
|
||||
prompt = "Grab mug"
|
||||
1
entities/grabject.gd.uid
Normal file
1
entities/grabject.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bx4wyybpwqwu0
|
||||
53
entities/grabject.tscn
Normal file
53
entities/grabject.tscn
Normal file
@@ -0,0 +1,53 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://cpjkxxf2nlpd1"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bx4wyybpwqwu0" path="res://entities/grabject.gd" id="1_xvy3x"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://w0jl7jy3oufh" path="res://models/props/mug.res" id="2_myur1"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://cnumt37jaqavc" path="res://models/props/mug_full_line.res" id="3_jg5js"]
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_wyf5s"]
|
||||
height = 0.14
|
||||
radius = 0.08
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_fvtfi"]
|
||||
size = Vector3(0.06, 0.1, 0.038)
|
||||
|
||||
[node name="Grabject" type="RigidBody3D"]
|
||||
collision_layer = 11
|
||||
collision_mask = 3
|
||||
freeze = true
|
||||
contact_monitor = true
|
||||
max_contacts_reported = 3
|
||||
script = ExtResource("1_xvy3x")
|
||||
|
||||
[node name="mesh_mugge" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.08, 0)
|
||||
mesh = ExtResource("2_myur1")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="coffee" type="MeshInstance3D" parent="mesh_mugge"]
|
||||
visible = false
|
||||
mesh = ExtResource("3_jg5js")
|
||||
skeleton = NodePath("../..")
|
||||
|
||||
[node name="shape_mugge" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.07, 0)
|
||||
shape = SubResource("CylinderShape3D_wyf5s")
|
||||
disabled = true
|
||||
debug_fill = false
|
||||
|
||||
[node name="shape_mugge_secondary" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.11, 0.072, 0)
|
||||
shape = SubResource("BoxShape3D_fvtfi")
|
||||
disabled = true
|
||||
debug_fill = false
|
||||
|
||||
[node name="DelayTimer" type="Timer" parent="."]
|
||||
process_callback = 0
|
||||
one_shot = true
|
||||
|
||||
[node name="SleepTimer" type="Timer" parent="."]
|
||||
one_shot = true
|
||||
|
||||
[connection signal="body_entered" from="." to="." method="handle_collision"]
|
||||
[connection signal="timeout" from="DelayTimer" to="." method="hold2"]
|
||||
[connection signal="timeout" from="SleepTimer" to="." method="sleep"]
|
||||
48
entities/grabject.tscn18143063034.tmp
Normal file
48
entities/grabject.tscn18143063034.tmp
Normal file
@@ -0,0 +1,48 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://cpjkxxf2nlpd1"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bx4wyybpwqwu0" path="res://entities/grabject.gd" id="1_xvy3x"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://w0jl7jy3oufh" path="res://models/props/mug.res" id="2_myur1"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://cnumt37jaqavc" path="res://models/props/mug_full_line.res" id="3_jg5js"]
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_wyf5s"]
|
||||
height = 0.14
|
||||
radius = 0.08
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_fvtfi"]
|
||||
size = Vector3(0.06, 0.1, 0.038)
|
||||
|
||||
[node name="Grabject" type="RigidBody3D"]
|
||||
collision_layer = 11
|
||||
collision_mask = 3
|
||||
contact_monitor = true
|
||||
max_contacts_reported = 3
|
||||
script = ExtResource("1_xvy3x")
|
||||
|
||||
[node name="mesh_mugge" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.08, 0)
|
||||
visible = false
|
||||
mesh = ExtResource("2_myur1")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="coffee" type="MeshInstance3D" parent="mesh_mugge"]
|
||||
visible = false
|
||||
mesh = ExtResource("3_jg5js")
|
||||
skeleton = NodePath("../..")
|
||||
|
||||
[node name="shape_mugge" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.07, 0)
|
||||
shape = SubResource("CylinderShape3D_wyf5s")
|
||||
disabled = true
|
||||
debug_fill = false
|
||||
|
||||
[node name="shape_mugge_secondary" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.11, 0.072, 0)
|
||||
shape = SubResource("BoxShape3D_fvtfi")
|
||||
disabled = true
|
||||
debug_fill = false
|
||||
|
||||
[node name="DelayTimer" type="Timer" parent="."]
|
||||
process_callback = 0
|
||||
one_shot = true
|
||||
|
||||
[connection signal="timeout" from="DelayTimer" to="." method="hold2"]
|
||||
11091
entities/guaC1BD.tmp
Normal file
11091
entities/guaC1BD.tmp
Normal file
File diff suppressed because it is too large
Load Diff
11091
entities/guaF181.tmp
Normal file
11091
entities/guaF181.tmp
Normal file
File diff suppressed because it is too large
Load Diff
219
entities/guard.gd
Normal file
219
entities/guard.gd
Normal file
@@ -0,0 +1,219 @@
|
||||
extends CharacterBody3D
|
||||
|
||||
|
||||
@export var walk_speed : float = 2.0
|
||||
@export var run_speed : float = 5.0
|
||||
@export var route : Node3D
|
||||
|
||||
var state_change_cooldown : float = 0.1
|
||||
@export var alert_escalation_time : float = 3.0
|
||||
@export var suspicion_decay_time : float = 1.0
|
||||
|
||||
var state : String = "patrol"
|
||||
var current_waypoint : int = 0
|
||||
var paused : bool = false
|
||||
var turntoward : float = 0.0
|
||||
var lastseenpos : Vector3
|
||||
var pathupdateinterval : float = 0.75
|
||||
|
||||
var current_path: PackedVector3Array
|
||||
@onready var default_3d_map_rid: RID = get_world_3d().get_navigation_map()
|
||||
var current_path_index: int = 0
|
||||
var current_path_point: Vector3
|
||||
@onready var overheadstatus : Control = $StatusSprite/SubViewport/OverheadStatus
|
||||
|
||||
func _ready() -> void:
|
||||
overheadstatus.set_3dots()
|
||||
overheadstatus.set_timer(-1)
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
process_alerts()
|
||||
|
||||
if state == "patrol" and !paused and route and route.get_child_count() > 0 and current_path.is_empty() and NavigationServer3D.map_is_active(default_3d_map_rid):
|
||||
nextwaypoint()
|
||||
|
||||
if not is_on_floor():
|
||||
velocity += get_gravity() * delta
|
||||
|
||||
if !current_path.is_empty() and (state == "patrol" or state == "pursue_walkto"):
|
||||
current_path_point = current_path[current_path_index]
|
||||
walk_toward(current_path_point)
|
||||
|
||||
if global_transform.origin.distance_to(current_path_point) <= 0.6:
|
||||
current_path_index += 1
|
||||
if current_path_index >= current_path.size():
|
||||
clearpath()
|
||||
if state == "patrol":
|
||||
var wayedpoint = route.get_children()[current_waypoint]
|
||||
if wayedpoint.pausetime > 0:
|
||||
paused = true
|
||||
$WaypointPauseTimer.start(wayedpoint.pausetime)
|
||||
$AnimationPlayer.play(wayedpoint.animation)
|
||||
if wayedpoint.turntoward == true:
|
||||
turntoward = wayedpoint.global_rotation.y
|
||||
else:
|
||||
turntoward = $CharacterArmature.global_rotation.y
|
||||
current_waypoint += 1
|
||||
if current_waypoint > route.get_child_count()-1:
|
||||
current_waypoint = 0
|
||||
if state == "pursue_walkto":
|
||||
print("done!")
|
||||
state = "suspicion_start"
|
||||
$StateChangeTimer.start(state_change_cooldown)
|
||||
print("player sighted! state changed to suspicion_start")
|
||||
overheadstatus.set_3dots()
|
||||
overheadstatus.set_timer(-1)
|
||||
else:
|
||||
stand_still()
|
||||
|
||||
if paused and state == "patrol":
|
||||
# overheadstatus.set_timer(100-(($WaypointPauseTimer.time_left / $WaypointPauseTimer.wait_time)*100))
|
||||
if $CharacterArmature.global_rotation.y != turntoward:
|
||||
lerp_toward(turntoward)
|
||||
|
||||
move_and_slide()
|
||||
animate()
|
||||
|
||||
func animate():
|
||||
if velocity.length() > 0:
|
||||
$AnimationPlayer.play("Walk")
|
||||
elif !paused:
|
||||
$AnimationPlayer.play("Idle_Neutral")
|
||||
|
||||
func walk_toward(point: Vector3):
|
||||
var direction = global_transform.origin.direction_to(point)
|
||||
velocity.x = direction.x * walk_speed
|
||||
velocity.z = direction.z * walk_speed
|
||||
|
||||
lerp_toward(atan2(velocity.x, velocity.z))
|
||||
|
||||
func stand_still():
|
||||
velocity.x = 0
|
||||
velocity.z = 0
|
||||
|
||||
func process_alerts():
|
||||
var seeingplayer : bool
|
||||
|
||||
if state == "patrol":
|
||||
seeingplayer = checksight()
|
||||
if seeingplayer:
|
||||
state = "suspicion_start"
|
||||
$StateChangeTimer.start(state_change_cooldown)
|
||||
print("player sighted! state changed to suspicion_start")
|
||||
return
|
||||
|
||||
if state == "suspicion":
|
||||
seeingplayer = checksight()
|
||||
|
||||
if !seeingplayer and $StateChangeTimer.is_stopped():
|
||||
$StateChangeTimer.start(suspicion_decay_time)
|
||||
elif seeingplayer:
|
||||
if !$StateChangeTimer.is_stopped(): $StateChangeTimer.stop()
|
||||
overheadstatus.set_questionmark()
|
||||
var percent : float = 100 - (($AlertEscalationTimer.time_left / alert_escalation_time) * 100)
|
||||
overheadstatus.set_timer(percent)
|
||||
if velocity.length() == 0: lerp_toward(turntoward)
|
||||
|
||||
if state == "pursue_walkto":
|
||||
seeingplayer = checksight()
|
||||
if seeingplayer:
|
||||
print("update path?")
|
||||
if !current_path.is_empty() and (current_path[current_path.size()-1].distance_to(lastseenpos) > 1):
|
||||
setpath(lastseenpos)
|
||||
print("updated path!")
|
||||
|
||||
func nextwaypoint():
|
||||
var waypoint = route.get_children()[current_waypoint]
|
||||
var target_position: Vector3 = waypoint.global_transform.origin
|
||||
setpath(target_position)
|
||||
|
||||
func setpath(target_position):
|
||||
clearpath()
|
||||
var start_position: Vector3 = global_transform.origin
|
||||
current_path = NavigationServer3D.map_get_path(
|
||||
default_3d_map_rid,
|
||||
start_position,
|
||||
target_position,
|
||||
true
|
||||
)
|
||||
|
||||
func clearpath():
|
||||
current_path = []
|
||||
current_path_index = 0
|
||||
current_path_point = global_transform.origin
|
||||
velocity.x = 0
|
||||
velocity.z = 0
|
||||
|
||||
func checksight():
|
||||
var seenthings = $CharacterArmature/SightCollider.get_overlapping_bodies()
|
||||
|
||||
if !seenthings.is_empty():
|
||||
for item in seenthings:
|
||||
if item.get_name() == "PlayerVisibilityShape":
|
||||
if sightraycheck(item) == true:
|
||||
return true
|
||||
|
||||
return false
|
||||
|
||||
func sightraycheck(target):
|
||||
var radius = target.shape_owner_get_shape(0,0).radius
|
||||
var height : float
|
||||
var tramsorm : Transform3D
|
||||
|
||||
if target.get_parent().get_parent().crouched:
|
||||
height = target.shape_owner_get_shape(1,0).height
|
||||
tramsorm = target.shape_owner_get_transform(1).rotated(Vector3(0,1,0),target.global_rotation.y)
|
||||
else:
|
||||
height = target.shape_owner_get_shape(0,0).height
|
||||
tramsorm = target.shape_owner_get_transform(0).rotated(Vector3(0,1,0),target.global_rotation.y)
|
||||
|
||||
var top = to_local(target.global_transform.origin - $CharacterArmature/SightCollider/SightRay.transform.origin + tramsorm.origin + Vector3(0, height/2, 0))
|
||||
$CharacterArmature/SightCollider/SightRay.target_position = top
|
||||
$CharacterArmature/SightCollider/SightRay.global_rotation = Vector3(0,0,0)
|
||||
$CharacterArmature/SightCollider/SightRay.force_raycast_update()
|
||||
if $CharacterArmature/SightCollider/SightRay.is_colliding():
|
||||
if $CharacterArmature/SightCollider/SightRay.get_collider().get_name() == "PlayerVisibilityShape":
|
||||
turntoward = (Vector2(target.global_transform.origin.z, target.global_transform.origin.x) - Vector2($CharacterArmature.global_transform.origin.z, $CharacterArmature.global_transform.origin.x)).angle()
|
||||
lastseenpos = target.global_transform.origin
|
||||
return true
|
||||
|
||||
return false
|
||||
|
||||
func lerp_toward(angle: float):
|
||||
$CharacterArmature.global_rotation.y = lerp_angle($CharacterArmature.global_rotation.y, angle, 0.15)
|
||||
|
||||
|
||||
func _on_state_change_timer_timeout() -> void:
|
||||
$StateChangeTimer.stop()
|
||||
$AlertEscalationTimer.stop()
|
||||
|
||||
if state == "suspicion_start":
|
||||
state = "suspicion"
|
||||
$AlertEscalationTimer.start(alert_escalation_time)
|
||||
return
|
||||
|
||||
if state == "suspicion":
|
||||
state = "patrol"
|
||||
overheadstatus.set_3dots()
|
||||
overheadstatus.set_timer(-1)
|
||||
return
|
||||
|
||||
if state == "pursue_start":
|
||||
setpath(lastseenpos)
|
||||
state = "pursue_walkto"
|
||||
return
|
||||
|
||||
|
||||
func _on_alert_escalation_timer_timeout() -> void:
|
||||
$AlertEscalationTimer.stop()
|
||||
if state == "suspicion":
|
||||
state = "pursue_start"
|
||||
$StateChangeTimer.start(state_change_cooldown)
|
||||
overheadstatus.set_timer(-1)
|
||||
overheadstatus.set_exclamationmark()
|
||||
|
||||
|
||||
func _on_waypoint_pause_timer_timeout() -> void:
|
||||
$WaypointPauseTimer.stop()
|
||||
if paused:
|
||||
paused = false
|
||||
1
entities/guard.gd.uid
Normal file
1
entities/guard.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://d0exmjrldmro1
|
||||
11146
entities/guard.tscn
Normal file
11146
entities/guard.tscn
Normal file
File diff suppressed because it is too large
Load Diff
28
entities/hud.gd
Normal file
28
entities/hud.gd
Normal file
@@ -0,0 +1,28 @@
|
||||
extends CanvasLayer
|
||||
|
||||
#dynamic sizes for elements as proportion of screen height
|
||||
@export var margin_spacing : float = (1.0/25.0)
|
||||
@export var size_text_heading : float = (1.0/8.0)
|
||||
@export var size_text_prompt_selected : float = (1.0/12.0)
|
||||
@export var interact_icon_size : float = (128.0/720.0)
|
||||
|
||||
func _ready() -> void:
|
||||
set_proportions()
|
||||
get_viewport().size_changed.connect(set_proportions)
|
||||
$icon_eye.self_modulate.a = 0.3
|
||||
$icon_hand.self_modulate.a = 0.3
|
||||
pass
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
|
||||
# adjust UI element sizes to be proportionate to window height
|
||||
func set_proportions():
|
||||
var screenwidth : float = get_viewport().size.x
|
||||
var screenheight : float = get_viewport().size.y
|
||||
$hud_top.add_theme_constant_override("margin_top", int(screenheight * margin_spacing))
|
||||
$hud_top/center/testtext.label_settings.set_font_size(int(screenheight * size_text_heading))
|
||||
$hud_bottom.add_theme_constant_override("margin_bottom", int(screenheight * margin_spacing))
|
||||
$icon_eye.set_size(Vector2(int(screenheight * interact_icon_size), int(screenheight * interact_icon_size)))
|
||||
$icon_hand.set_size(Vector2(int(screenheight * interact_icon_size), int(screenheight * interact_icon_size)))
|
||||
$hud_bottom/promptbox/prompt_primary.label_settings.set_font_size(int(screenheight * size_text_prompt_selected))
|
||||
1
entities/hud.gd.uid
Normal file
1
entities/hud.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://d1a87nfi5lnhd
|
||||
108
entities/hud.tscn
Normal file
108
entities/hud.tscn
Normal file
@@ -0,0 +1,108 @@
|
||||
[gd_scene load_steps=10 format=3 uid="uid://d2nji886vjn5x"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://d1a87nfi5lnhd" path="res://entities/hud.gd" id="1_37p78"]
|
||||
[ext_resource type="FontFile" uid="uid://ch80yhbam0jo2" path="res://fonts/Tangerine-Bold.ttf" id="2_64ctp"]
|
||||
[ext_resource type="FontFile" uid="uid://bhpgvdh6eyojj" path="res://fonts/CrimsonText-Italic.ttf" id="3_mcea6"]
|
||||
[ext_resource type="Texture2D" uid="uid://b06wrpqbpqxla" path="res://images/eyecon.png" id="4_npr4g"]
|
||||
[ext_resource type="Texture2D" uid="uid://dynnluyu4a2w4" path="res://images/handicon.png" id="5_jqn4v"]
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_8sq4i"]
|
||||
font = ExtResource("2_64ctp")
|
||||
font_size = 96
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_jqn4v"]
|
||||
font = ExtResource("3_mcea6")
|
||||
font_size = 68
|
||||
font_color = Color(1, 1, 1, 0.501961)
|
||||
outline_size = 16
|
||||
outline_color = Color(0, 0, 0, 0.501961)
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_fpuge"]
|
||||
font = ExtResource("3_mcea6")
|
||||
font_size = 80
|
||||
font_color = Color(1, 1, 1, 0.627451)
|
||||
outline_size = 16
|
||||
outline_color = Color(0, 0, 0, 0.627451)
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_npr4g"]
|
||||
font = ExtResource("3_mcea6")
|
||||
font_size = 96
|
||||
outline_size = 16
|
||||
outline_color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="hud" type="CanvasLayer"]
|
||||
script = ExtResource("1_37p78")
|
||||
|
||||
[node name="hud_top" type="MarginContainer" parent="."]
|
||||
anchors_preset = 10
|
||||
anchor_right = 1.0
|
||||
offset_bottom = 96.0
|
||||
grow_horizontal = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 2
|
||||
|
||||
[node name="center" type="CenterContainer" parent="hud_top"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="testtext" type="Label" parent="hud_top/center"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "Nerd Spotted!"
|
||||
label_settings = SubResource("LabelSettings_8sq4i")
|
||||
|
||||
[node name="hud_bottom" type="MarginContainer" parent="."]
|
||||
anchors_preset = 12
|
||||
anchor_top = 1.0
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
theme_override_constants/margin_bottom = 24
|
||||
|
||||
[node name="promptbox" type="VBoxContainer" parent="hud_bottom"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = -8
|
||||
|
||||
[node name="prompt_tertiary" type="Label" parent="hud_bottom/promptbox"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "Do thing"
|
||||
label_settings = SubResource("LabelSettings_jqn4v")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="prompt_secondary" type="Label" parent="hud_bottom/promptbox"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "Do thing"
|
||||
label_settings = SubResource("LabelSettings_fpuge")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="prompt_primary" type="Label" parent="hud_bottom/promptbox"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "Do thing"
|
||||
label_settings = SubResource("LabelSettings_npr4g")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="icon_eye" type="TextureRect" parent="."]
|
||||
visible = false
|
||||
offset_right = 192.0
|
||||
offset_bottom = 192.0
|
||||
pivot_offset = Vector2(64, 64)
|
||||
texture = ExtResource("4_npr4g")
|
||||
expand_mode = 1
|
||||
stretch_mode = 4
|
||||
|
||||
[node name="icon_hand" type="TextureRect" parent="."]
|
||||
visible = false
|
||||
offset_right = 192.0
|
||||
offset_bottom = 192.0
|
||||
pivot_offset = Vector2(64, 64)
|
||||
texture = ExtResource("5_jqn4v")
|
||||
expand_mode = 1
|
||||
stretch_mode = 4
|
||||
40
entities/note.gd
Normal file
40
entities/note.gd
Normal file
@@ -0,0 +1,40 @@
|
||||
extends Control
|
||||
|
||||
var handwritten_text_size : float = (1.0/25.0)
|
||||
var handwritten_margins : float = (1.0/15.0)
|
||||
var handwritten_page_width : float = (3.0/4.0)
|
||||
var handwritten_linespacing : float = -(1.1)
|
||||
|
||||
func setup(viewportsize, style, thetext):
|
||||
set_size(viewportsize)
|
||||
|
||||
if style == "handwritten":
|
||||
$handwritten/page.custom_minimum_size.x = int(viewportsize.x * handwritten_page_width)
|
||||
$handwritten/page/margins/thetext.add_theme_font_size_override("normal_font_size", int(viewportsize.y * handwritten_text_size))
|
||||
$handwritten/page/margins/thetext.add_theme_constant_override("line_separation", int((viewportsize.y * handwritten_text_size) * handwritten_linespacing))
|
||||
$handwritten/page/margins.add_theme_constant_override("margin_top", int(viewportsize.y * handwritten_margins))
|
||||
$handwritten/page/margins.add_theme_constant_override("margin_left", int(viewportsize.y * handwritten_margins))
|
||||
$handwritten/page/margins.add_theme_constant_override("margin_right", int(viewportsize.y * handwritten_margins))
|
||||
|
||||
$handwritten.visible = true
|
||||
else:
|
||||
print(style + " is an invalid note style!")
|
||||
pass
|
||||
|
||||
populate_text(style,thetext)
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if visible and Input.is_action_just_pressed("ui_cancel"):
|
||||
visible = false
|
||||
get_tree().paused = false
|
||||
get_parent().get_node("hud").visible = true
|
||||
|
||||
func populate_text(style,thetext):
|
||||
var thepage : RichTextLabel
|
||||
if style == "handwritten":
|
||||
thepage = $handwritten/page/margins/thetext
|
||||
else:
|
||||
print(style + " is an invalid note style!")
|
||||
pass
|
||||
thepage.clear()
|
||||
thepage.append_text(thetext)
|
||||
1
entities/note.gd.uid
Normal file
1
entities/note.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://q4cj4ds7h7yu
|
||||
65
entities/note.tscn
Normal file
65
entities/note.tscn
Normal file
@@ -0,0 +1,65 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://mmfinssr21yy"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://q4cj4ds7h7yu" path="res://entities/note.gd" id="1_g4cjv"]
|
||||
[ext_resource type="FontVariation" uid="uid://cq2ossjetoslp" path="res://fonts/handwriting.tres" id="2_gb8vh"]
|
||||
|
||||
[sub_resource type="Theme" id="Theme_4dkrx"]
|
||||
default_font = ExtResource("2_gb8vh")
|
||||
default_font_size = 40
|
||||
|
||||
[node name="note" type="Control"]
|
||||
process_mode = 3
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_right = -640.0
|
||||
offset_bottom = -360.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_g4cjv")
|
||||
|
||||
[node name="handwritten" type="HBoxContainer" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/separation = 0
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="handwritten"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="page" type="ColorRect" parent="handwritten"]
|
||||
custom_minimum_size = Vector2(960, 0)
|
||||
layout_mode = 2
|
||||
color = Color(0.85, 0.833, 0.748, 1)
|
||||
|
||||
[node name="margins" type="MarginContainer" parent="handwritten/page"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 48
|
||||
theme_override_constants/margin_top = 48
|
||||
theme_override_constants/margin_right = 48
|
||||
|
||||
[node name="thetext" type="RichTextLabel" parent="handwritten/page/margins"]
|
||||
layout_mode = 2
|
||||
theme = SubResource("Theme_4dkrx")
|
||||
theme_override_colors/default_color = Color(0.101961, 0.101961, 0.101961, 1)
|
||||
theme_override_constants/line_separation = -36
|
||||
bbcode_enabled = true
|
||||
text = "sammed ple"
|
||||
scroll_active = false
|
||||
|
||||
[node name="ColorRect3" type="ColorRect" parent="handwritten"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
color = Color(0, 0, 0, 1)
|
||||
384
entities/npc.gd
Normal file
384
entities/npc.gd
Normal file
@@ -0,0 +1,384 @@
|
||||
extends CharacterBody3D
|
||||
|
||||
var npc : bool = true
|
||||
|
||||
@export var waypoint_route : Node3D = null
|
||||
var waypoints : Array
|
||||
|
||||
var walk_speed : float = 2.0
|
||||
var run_speed : float = 5.0
|
||||
var time_suspicionbuild : float = 3.0
|
||||
var time_suspiciondecay : float = 2.0
|
||||
var time_cooldown : float = 2.0
|
||||
|
||||
# var ragdolling : bool = false
|
||||
|
||||
var seeing_player : bool = false
|
||||
var move_this_frame : bool = false
|
||||
var unpause_this_frame : bool = false
|
||||
var on_route : bool = false
|
||||
|
||||
@export var behavior_type : String = "guard"
|
||||
var state : String = "default"
|
||||
var current_waypoint : int = -1
|
||||
var paused : bool = false
|
||||
var pauseanim : String
|
||||
var pauseturn : bool
|
||||
var pauseangle : float
|
||||
var lastseenpos : Vector3
|
||||
var pathupdateinterval : float = 0.25
|
||||
|
||||
var player : Node
|
||||
|
||||
@export var appearance : String = "guard"
|
||||
|
||||
var current_path : PackedVector3Array
|
||||
@onready var default_3d_map_rid : RID = get_world_3d().get_navigation_map()
|
||||
var current_path_index : int = 0
|
||||
var current_path_point : Vector3
|
||||
var path_end_point : Vector3
|
||||
@onready var overheadstatus : Control = $StatusSprite/SubViewport/OverheadStatus
|
||||
|
||||
func _ready() -> void:
|
||||
overheadstatus.set_nothing()
|
||||
overheadstatus.set_timer(-1)
|
||||
|
||||
call_deferred("init_route")
|
||||
|
||||
$Timers/WaypointPause.timeout.connect(timeout_waypointpause)
|
||||
$Timers/Suspicion.timeout.connect(timeout_suspicion)
|
||||
$Timers/Sight.timeout.connect(timeout_sight)
|
||||
|
||||
if appearance == "guard":
|
||||
$CharacterArmature/Skeleton3D/head_guard.visible = true
|
||||
$CharacterArmature/Skeleton3D/body_guard.visible = true
|
||||
$CharacterArmature/Skeleton3D/feet_guard.visible = true
|
||||
$CharacterArmature/Skeleton3D/legs_guard.visible = true
|
||||
elif appearance == "barista":
|
||||
$CharacterArmature/Skeleton3D/head_barista.visible = true
|
||||
$CharacterArmature/Skeleton3D/body_barista.visible = true
|
||||
$CharacterArmature/Skeleton3D/feet_barista.visible = true
|
||||
$CharacterArmature/Skeleton3D/legs_barista.visible = true
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
seeing_player = checksight()
|
||||
ai_process()
|
||||
if move_this_frame:
|
||||
movement_process(delta)
|
||||
move_and_slide()
|
||||
animate()
|
||||
|
||||
func impact():
|
||||
# ragdolling = true
|
||||
state = "unconscious"
|
||||
set_collision_layer_value(1,0)
|
||||
# $CharacterArmature/Skeleton3D/ragdoll.active = true
|
||||
# $CharacterArmature/Skeleton3D/ragdoll.physical_bones_start_simulation()
|
||||
$AnimationPlayer.play("Death")
|
||||
stand_still()
|
||||
clearpath()
|
||||
|
||||
func ai_process():
|
||||
if unpause_this_frame:
|
||||
paused = false
|
||||
unpause_this_frame = false
|
||||
|
||||
if state == "to_default":
|
||||
state = "default"
|
||||
elif state == "to_cooldown":
|
||||
clearpath()
|
||||
state = "cooldown"
|
||||
$Timers/Suspicion.stop()
|
||||
$Timers/Suspicion.start(time_cooldown)
|
||||
elif state == "unconscious":
|
||||
on_route = false
|
||||
$Timers/Suspicion.stop()
|
||||
$Timers/Sight.stop()
|
||||
overheadstatus.set_nothing()
|
||||
overheadstatus.set_timer(-1)
|
||||
|
||||
if behavior_type == "guard":
|
||||
if state == "suspicion_escalatecheck":
|
||||
on_route = false
|
||||
$Timers/Suspicion.stop()
|
||||
$Timers/Sight.stop()
|
||||
|
||||
if seeing_player:
|
||||
setpath(lastseenpos)
|
||||
overheadstatus.set_exclamationpoint()
|
||||
overheadstatus.set_timer(-1)
|
||||
$Timers/Sight.start(pathupdateinterval)
|
||||
state = "pursuit"
|
||||
else:
|
||||
state = "default"
|
||||
elif state == "pursuit_updatepath":
|
||||
$Timers/Sight.stop()
|
||||
$Timers/Sight.start(pathupdateinterval)
|
||||
setpath(lastseenpos)
|
||||
state = "pursuit"
|
||||
elif state == "cooldown_end":
|
||||
$Timers/Suspicion.stop()
|
||||
$Timers/Sight.stop()
|
||||
on_route = true
|
||||
if len(waypoints) > 1:
|
||||
current_waypoint = nearest_waypoint()
|
||||
state = "default"
|
||||
|
||||
if state == "default":
|
||||
overheadstatus.set_nothing()
|
||||
overheadstatus.set_timer(-1)
|
||||
|
||||
if paused:
|
||||
$AnimationPlayer.play(pauseanim)
|
||||
if pauseturn == true:
|
||||
lerp_toward(pauseangle)
|
||||
|
||||
if seeing_player:
|
||||
$Timers/Suspicion.stop()
|
||||
$Timers/Suspicion.start(time_suspicionbuild)
|
||||
state = "suspicion"
|
||||
if paused:
|
||||
unpause_this_frame = true
|
||||
$Timers/WaypointPause.stop()
|
||||
else:
|
||||
on_route = true
|
||||
move_this_frame = true
|
||||
elif state == "suspicion":
|
||||
clearpath()
|
||||
on_route = false
|
||||
overheadstatus.set_questionmark()
|
||||
var timerpercent : float = ((time_suspicionbuild - $Timers/Suspicion.time_left) / time_suspicionbuild) * 100
|
||||
overheadstatus.set_timer(timerpercent)
|
||||
lerp_toward(angle_toward(lastseenpos))
|
||||
|
||||
if seeing_player:
|
||||
if $Timers/Suspicion.paused:
|
||||
$Timers/Suspicion.paused = false
|
||||
if !$Timers/Sight.is_stopped():
|
||||
$Timers/Sight.stop()
|
||||
$Timers/Sight.start(time_suspiciondecay)
|
||||
elif !seeing_player:
|
||||
if !$Timers/Suspicion.paused:
|
||||
$Timers/Suspicion.paused = true
|
||||
if $Timers/Sight.is_stopped():
|
||||
$Timers/Sight.start(time_suspiciondecay)
|
||||
elif state == "pursuit":
|
||||
if global_transform.origin.distance_to(player.global_transform.origin) <= 0.8:
|
||||
$Timers/Sight.stop()
|
||||
state = "to_cooldown"
|
||||
elif global_transform.origin.distance_to(path_end_point) <= 0.5:
|
||||
$Timers/Sight.stop()
|
||||
pauseangle = $CharacterArmature.global_rotation.y - deg_to_rad(90)
|
||||
clearpath()
|
||||
state = "pursuit_lookleft"
|
||||
else:
|
||||
on_route = false
|
||||
if !current_path.is_empty():
|
||||
move_this_frame = true
|
||||
elif state == "pursuit_lookleft":
|
||||
on_route = false
|
||||
|
||||
if seeing_player:
|
||||
state = "suspicion_escalatecheck"
|
||||
else:
|
||||
lerp_toward(pauseangle, 0.05)
|
||||
var snappedangle = snapped(fposmod($CharacterArmature.global_rotation.y, TAU), 0.01)
|
||||
if snappedangle == snapped(fposmod(pauseangle, TAU), 0.01):
|
||||
pauseangle = $CharacterArmature.global_rotation.y + deg_to_rad(180)
|
||||
state = "pursuit_lookright"
|
||||
elif state == "pursuit_lookright":
|
||||
on_route = false
|
||||
|
||||
if seeing_player:
|
||||
state = "suspicion_escalatecheck"
|
||||
else:
|
||||
lerp_toward(pauseangle, 0.05)
|
||||
var snappedangle = snapped(fposmod($CharacterArmature.global_rotation.y, TAU), 0.01)
|
||||
if snappedangle == snapped(fposmod(pauseangle, TAU), 0.01):
|
||||
pauseangle = $CharacterArmature.global_rotation.y + deg_to_rad(90)
|
||||
state = "pursuit_lookback"
|
||||
elif state == "pursuit_lookback":
|
||||
on_route = false
|
||||
|
||||
if seeing_player:
|
||||
state = "suspicion_escalatecheck"
|
||||
else:
|
||||
lerp_toward(pauseangle, 0.05)
|
||||
var snappedangle = snapped(fposmod($CharacterArmature.global_rotation.y, TAU), 0.01)
|
||||
if snappedangle == snapped(fposmod(pauseangle, TAU), 0.01):
|
||||
state = "to_cooldown"
|
||||
elif state == "cooldown":
|
||||
overheadstatus.set_3dots()
|
||||
overheadstatus.subtractive = true
|
||||
var percent : float = ($Timers/Suspicion.time_left / time_suspiciondecay) * 100
|
||||
overheadstatus.set_timer(percent)
|
||||
|
||||
func movement_process(delta):
|
||||
if not is_on_floor():
|
||||
velocity += get_gravity() * delta
|
||||
|
||||
if on_route and len(waypoints) == 1 and (global_transform.origin.distance_to(waypoints[0].global_transform.origin) < 0.6):
|
||||
if $CharacterArmature.global_rotation.y != waypoints[0].global_rotation.y:
|
||||
lerp_toward(waypoints[0].global_rotation.y)
|
||||
stand_still()
|
||||
elif !current_path.is_empty():
|
||||
current_path_point = current_path[current_path_index]
|
||||
if !paused:
|
||||
walk_toward(current_path_point)
|
||||
|
||||
if global_transform.origin.distance_to(current_path_point) <= 0.5:
|
||||
current_path_index += 1
|
||||
if current_path_index >= current_path.size():
|
||||
if on_route:
|
||||
var wayedpoint = waypoints[current_waypoint]
|
||||
if wayedpoint.pausetime > 0:
|
||||
paused = true
|
||||
$Timers/WaypointPause.start(wayedpoint.pausetime)
|
||||
pauseanim = wayedpoint.animation
|
||||
if wayedpoint.turntoward == true:
|
||||
pauseturn = true
|
||||
pauseangle = wayedpoint.global_rotation.y
|
||||
else:
|
||||
pauseturn = false
|
||||
current_waypoint += 1
|
||||
if current_waypoint > len(waypoints)-1:
|
||||
current_waypoint = 0
|
||||
nextwaypoint()
|
||||
else:
|
||||
clearpath()
|
||||
elif NavigationServer3D.map_get_iteration_id(default_3d_map_rid) != 0 and current_path.is_empty() and on_route:
|
||||
nextwaypoint()
|
||||
else:
|
||||
stand_still()
|
||||
|
||||
move_this_frame = false
|
||||
|
||||
func animate():
|
||||
if state == "unconscious":
|
||||
pass
|
||||
elif velocity.length() > 0:
|
||||
$AnimationPlayer.play("Walk")
|
||||
elif !paused or state != "default":
|
||||
$AnimationPlayer.play("Idle_Neutral")
|
||||
|
||||
func angle_toward(target : Vector3):
|
||||
return (Vector2(target.z, target.x) - Vector2($CharacterArmature.global_transform.origin.z, $CharacterArmature.global_transform.origin.x)).angle()
|
||||
|
||||
func walk_toward(point: Vector3):
|
||||
var direction = global_transform.origin.direction_to(point)
|
||||
velocity.x = direction.x * walk_speed
|
||||
velocity.z = direction.z * walk_speed
|
||||
|
||||
lerp_toward(atan2(velocity.x, velocity.z))
|
||||
|
||||
func stand_still():
|
||||
velocity.x = 0
|
||||
velocity.z = 0
|
||||
|
||||
func nextwaypoint():
|
||||
var waypoint = waypoints[current_waypoint]
|
||||
var target_position: Vector3 = waypoint.global_transform.origin
|
||||
setpath(target_position)
|
||||
|
||||
func setpath(target_position):
|
||||
clearpath()
|
||||
var start_position: Vector3 = global_transform.origin
|
||||
current_path = NavigationServer3D.map_get_path(
|
||||
default_3d_map_rid,
|
||||
start_position,
|
||||
target_position,
|
||||
true
|
||||
)
|
||||
path_end_point = current_path[len(current_path)-1]
|
||||
|
||||
func clearpath():
|
||||
current_path = []
|
||||
current_path_index = 0
|
||||
current_path_point = global_transform.origin
|
||||
velocity.x = 0
|
||||
velocity.z = 0
|
||||
|
||||
func checksight():
|
||||
var seenthings = $CharacterArmature/SightCollider.get_overlapping_bodies()
|
||||
|
||||
if !seenthings.is_empty():
|
||||
for item in seenthings:
|
||||
if item.get_name() == "PlayerVisibilityShape":
|
||||
player = item.get_parent().get_parent()
|
||||
if sightraycheck(item) == true:
|
||||
return true
|
||||
|
||||
return false
|
||||
|
||||
func sightraycheck(target):
|
||||
# var radius = target.shape_owner_get_shape(0,0).radius
|
||||
var height : float
|
||||
var tramsorm : Transform3D
|
||||
|
||||
if target.get_parent().get_parent().get_name() == "Player" and player.crouched:
|
||||
height = target.shape_owner_get_shape(1,0).height
|
||||
tramsorm = target.shape_owner_get_transform(1).rotated(Vector3(0,1,0),target.global_rotation.y)
|
||||
else:
|
||||
height = target.shape_owner_get_shape(0,0).height
|
||||
tramsorm = target.shape_owner_get_transform(0).rotated(Vector3(0,1,0),target.global_rotation.y)
|
||||
|
||||
var top = to_local(target.global_transform.origin - $CharacterArmature/SightCollider/SightRay.transform.origin + tramsorm.origin + Vector3(0, (height/2)-0.1, 0))
|
||||
$CharacterArmature/SightCollider/SightRay.target_position = top
|
||||
$CharacterArmature/SightCollider/SightRay.global_rotation = global_rotation
|
||||
$CharacterArmature/SightCollider/SightRay.force_raycast_update()
|
||||
if $CharacterArmature/SightCollider/SightRay.is_colliding():
|
||||
if $CharacterArmature/SightCollider/SightRay.get_collider().get_name() == "PlayerVisibilityShape":
|
||||
lastseenpos = target.global_transform.origin
|
||||
return true
|
||||
|
||||
return false
|
||||
|
||||
func lerp_toward(angle: float, speed = 0.15):
|
||||
$CharacterArmature.global_rotation.y = lerp_angle($CharacterArmature.global_rotation.y, angle, speed)
|
||||
|
||||
func get_waypoints(path: Node3D):
|
||||
for point in path.get_children():
|
||||
waypoints.append(point)
|
||||
|
||||
func nearest_waypoint():
|
||||
var nearest : Vector3 = waypoints[0].global_transform.origin
|
||||
var nearest_index : int = 0
|
||||
for point in len(waypoints):
|
||||
if global_transform.origin.distance_to(waypoints[point].global_transform.origin) < global_transform.origin.distance_to(nearest):
|
||||
nearest = waypoints[point].global_transform.origin
|
||||
nearest_index = point
|
||||
return nearest_index
|
||||
|
||||
func init_route() -> void:
|
||||
if waypoint_route == null:
|
||||
var startpos = Marker3D.new()
|
||||
get_tree().current_scene.add_child(startpos)
|
||||
startpos.set_global_transform(global_transform)
|
||||
startpos.set_script(preload("res://scripts/waypoint.gd"))
|
||||
waypoints.append(startpos)
|
||||
else:
|
||||
get_waypoints(waypoint_route)
|
||||
|
||||
func timeout_waypointpause() -> void:
|
||||
if paused:
|
||||
unpause_this_frame = true
|
||||
|
||||
func timeout_suspicion() -> void:
|
||||
if behavior_type == "guard":
|
||||
if state == "suspicion":
|
||||
state = "suspicion_escalatecheck"
|
||||
if state == "pursuit_lookaround":
|
||||
state = "to_cooldown"
|
||||
elif state == "cooldown":
|
||||
state = "cooldown_end"
|
||||
|
||||
func timeout_sight() -> void:
|
||||
if behavior_type == "guard":
|
||||
if state == "suspicion":
|
||||
$Timers/Sight.stop()
|
||||
state = "to_default"
|
||||
elif state == "pursuit":
|
||||
$Timers/Sight.stop()
|
||||
$Timers/Sight.start(pathupdateinterval)
|
||||
if path_end_point.distance_to(lastseenpos) >= 2:
|
||||
state = "pursuit_updatepath"
|
||||
1
entities/npc.gd.uid
Normal file
1
entities/npc.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dafn06mxlctnr
|
||||
11177
entities/npc.tscn
Normal file
11177
entities/npc.tscn
Normal file
File diff suppressed because it is too large
Load Diff
242
entities/npc_backup.gd
Normal file
242
entities/npc_backup.gd
Normal file
@@ -0,0 +1,242 @@
|
||||
extends CharacterBody3D
|
||||
|
||||
var walk_speed : float = 2.0
|
||||
var run_speed : float = 5.0
|
||||
@export var waypoint_route : Node3D
|
||||
|
||||
var state_change_cooldown : float = 0.1
|
||||
var alert_escalation_time : float = 3.0
|
||||
var suspicion_decay_time : float = 1.0
|
||||
|
||||
@export var behavior_type : String = "frozen"
|
||||
var state : String = "patrol"
|
||||
var current_waypoint : int = 0
|
||||
var paused : bool = false
|
||||
var turntoward : float = 0.0
|
||||
var lastseenpos : Vector3
|
||||
var pathupdateinterval : float = 0.75
|
||||
|
||||
@export var appearance : String = "guard"
|
||||
|
||||
var current_path: PackedVector3Array
|
||||
@onready var default_3d_map_rid: RID = get_world_3d().get_navigation_map()
|
||||
var current_path_index: int = 0
|
||||
var current_path_point: Vector3
|
||||
@onready var overheadstatus : Control = $StatusSprite/SubViewport/OverheadStatus
|
||||
|
||||
func _ready() -> void:
|
||||
overheadstatus.set_nothing()
|
||||
overheadstatus.set_timer(-1)
|
||||
|
||||
if appearance == "guard":
|
||||
$CharacterArmature/Skeleton3D/head_guard.visible = true
|
||||
$CharacterArmature/Skeleton3D/body_guard.visible = true
|
||||
$CharacterArmature/Skeleton3D/feet_guard.visible = true
|
||||
$CharacterArmature/Skeleton3D/legs_guard.visible = true
|
||||
elif appearance == "barista":
|
||||
$CharacterArmature/Skeleton3D/head_barista.visible = true
|
||||
$CharacterArmature/Skeleton3D/body_barista.visible = true
|
||||
$CharacterArmature/Skeleton3D/feet_barista.visible = true
|
||||
$CharacterArmature/Skeleton3D/legs_barista.visible = true
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
if behavior_type == "frozen":
|
||||
sight_test()
|
||||
elif behavior_type == "guard":
|
||||
process_alerts()
|
||||
|
||||
if not is_on_floor():
|
||||
velocity += get_gravity() * delta
|
||||
|
||||
if !current_path.is_empty() and behavior_type == "guard" and (state == "patrol" or state == "pursue_walkto"):
|
||||
current_path_point = current_path[current_path_index]
|
||||
walk_toward(current_path_point)
|
||||
|
||||
if global_transform.origin.distance_to(current_path_point) <= 0.6:
|
||||
current_path_index += 1
|
||||
if current_path_index >= current_path.size():
|
||||
clearpath()
|
||||
if state == "patrol":
|
||||
var wayedpoint = waypoint_route.get_children()[current_waypoint]
|
||||
if wayedpoint.pausetime > 0:
|
||||
paused = true
|
||||
$WaypointPauseTimer.start(wayedpoint.pausetime)
|
||||
$AnimationPlayer.play(wayedpoint.animation)
|
||||
if wayedpoint.turntoward == true:
|
||||
turntoward = wayedpoint.global_rotation.y
|
||||
else:
|
||||
turntoward = $CharacterArmature.global_rotation.y
|
||||
current_waypoint += 1
|
||||
if current_waypoint > waypoint_route.get_child_count()-1:
|
||||
current_waypoint = 0
|
||||
if state == "pursue_walkto":
|
||||
print("done!")
|
||||
state = "suspicion_start"
|
||||
$StateChangeTimer.start(state_change_cooldown)
|
||||
print("player sighted! state changed to suspicion_start")
|
||||
overheadstatus.set_3dots()
|
||||
overheadstatus.set_timer(-1)
|
||||
else:
|
||||
stand_still()
|
||||
|
||||
if paused and state == "patrol":
|
||||
# overheadstatus.set_timer(100-(($WaypointPauseTimer.time_left / $WaypointPauseTimer.wait_time)*100))
|
||||
if $CharacterArmature.global_rotation.y != turntoward:
|
||||
lerp_toward(turntoward)
|
||||
|
||||
move_and_slide()
|
||||
animate()
|
||||
|
||||
func animate():
|
||||
if velocity.length() > 0:
|
||||
$AnimationPlayer.play("Walk")
|
||||
elif !paused:
|
||||
$AnimationPlayer.play("Idle_Neutral")
|
||||
|
||||
func walk_toward(point: Vector3):
|
||||
var direction = global_transform.origin.direction_to(point)
|
||||
velocity.x = direction.x * walk_speed
|
||||
velocity.z = direction.z * walk_speed
|
||||
|
||||
lerp_toward(atan2(velocity.x, velocity.z))
|
||||
|
||||
func stand_still():
|
||||
velocity.x = 0
|
||||
velocity.z = 0
|
||||
|
||||
func sight_test():
|
||||
var seeingplayer : bool
|
||||
|
||||
seeingplayer = checksight()
|
||||
|
||||
if seeingplayer:
|
||||
overheadstatus.set_exclamationmark()
|
||||
else:
|
||||
overheadstatus.set_nothing()
|
||||
|
||||
func process_alerts():
|
||||
var seeingplayer : bool
|
||||
|
||||
if state == "patrol":
|
||||
seeingplayer = checksight()
|
||||
if seeingplayer:
|
||||
state = "suspicion_start"
|
||||
$StateChangeTimer.start(state_change_cooldown)
|
||||
print("player sighted! state changed to suspicion_start")
|
||||
return
|
||||
|
||||
if state == "suspicion":
|
||||
seeingplayer = checksight()
|
||||
|
||||
if !seeingplayer and $StateChangeTimer.is_stopped():
|
||||
$StateChangeTimer.start(suspicion_decay_time)
|
||||
elif seeingplayer:
|
||||
if !$StateChangeTimer.is_stopped(): $StateChangeTimer.stop()
|
||||
overheadstatus.set_questionmark()
|
||||
var percent : float = 100 - (($AlertEscalationTimer.time_left / alert_escalation_time) * 100)
|
||||
overheadstatus.set_timer(percent)
|
||||
if velocity.length() == 0: lerp_toward(turntoward)
|
||||
|
||||
if state == "pursue_walkto":
|
||||
seeingplayer = checksight()
|
||||
if seeingplayer:
|
||||
print("update path?")
|
||||
if !current_path.is_empty() and (current_path[current_path.size()-1].distance_to(lastseenpos) > 1):
|
||||
setpath(lastseenpos)
|
||||
print("updated path!")
|
||||
|
||||
func nextwaypoint():
|
||||
var waypoint = waypoint_route.get_children()[current_waypoint]
|
||||
var target_position: Vector3 = waypoint.global_transform.origin
|
||||
setpath(target_position)
|
||||
|
||||
func setpath(target_position):
|
||||
clearpath()
|
||||
var start_position: Vector3 = global_transform.origin
|
||||
current_path = NavigationServer3D.map_get_path(
|
||||
default_3d_map_rid,
|
||||
start_position,
|
||||
target_position,
|
||||
true
|
||||
)
|
||||
|
||||
func clearpath():
|
||||
current_path = []
|
||||
current_path_index = 0
|
||||
current_path_point = global_transform.origin
|
||||
velocity.x = 0
|
||||
velocity.z = 0
|
||||
|
||||
func checksight():
|
||||
var seenthings = $CharacterArmature/SightCollider.get_overlapping_bodies()
|
||||
|
||||
if !seenthings.is_empty():
|
||||
for item in seenthings:
|
||||
if item.get_name() == "PlayerVisibilityShape":
|
||||
if sightraycheck(item) == true:
|
||||
return true
|
||||
|
||||
return false
|
||||
|
||||
func sightraycheck(target):
|
||||
var radius = target.shape_owner_get_shape(0,0).radius
|
||||
var height : float
|
||||
var tramsorm : Transform3D
|
||||
|
||||
if target.get_parent().get_parent().crouched:
|
||||
height = target.shape_owner_get_shape(1,0).height
|
||||
tramsorm = target.shape_owner_get_transform(1).rotated(Vector3(0,1,0),target.global_rotation.y)
|
||||
else:
|
||||
height = target.shape_owner_get_shape(0,0).height
|
||||
tramsorm = target.shape_owner_get_transform(0).rotated(Vector3(0,1,0),target.global_rotation.y)
|
||||
|
||||
var top = to_local(target.global_transform.origin - $CharacterArmature/SightCollider/SightRay.transform.origin + tramsorm.origin + Vector3(0, (height/2)-0.1, 0))
|
||||
$CharacterArmature/SightCollider/SightRay.target_position = top
|
||||
# $CharacterArmature/SightCollider/SightRay.global_rotation = Vector3(0,0,0)
|
||||
$CharacterArmature/SightCollider/SightRay.force_raycast_update()
|
||||
if $CharacterArmature/SightCollider/SightRay.is_colliding():
|
||||
if $CharacterArmature/SightCollider/SightRay.get_collider().get_name() == "PlayerVisibilityShape":
|
||||
turntoward = (Vector2(target.global_transform.origin.z, target.global_transform.origin.x) - Vector2($CharacterArmature.global_transform.origin.z, $CharacterArmature.global_transform.origin.x)).angle()
|
||||
lastseenpos = target.global_transform.origin
|
||||
return true
|
||||
|
||||
return false
|
||||
|
||||
func lerp_toward(angle: float):
|
||||
$CharacterArmature.global_rotation.y = lerp_angle($CharacterArmature.global_rotation.y, angle, 0.15)
|
||||
|
||||
|
||||
func _on_state_change_timer_timeout() -> void:
|
||||
$StateChangeTimer.stop()
|
||||
$AlertEscalationTimer.stop()
|
||||
|
||||
if state == "suspicion_start":
|
||||
state = "suspicion"
|
||||
$AlertEscalationTimer.start(alert_escalation_time)
|
||||
return
|
||||
|
||||
if state == "suspicion":
|
||||
state = "patrol"
|
||||
overheadstatus.set_3dots()
|
||||
overheadstatus.set_timer(-1)
|
||||
return
|
||||
|
||||
if state == "pursue_start":
|
||||
setpath(lastseenpos)
|
||||
state = "pursue_walkto"
|
||||
return
|
||||
|
||||
|
||||
func _on_alert_escalation_timer_timeout() -> void:
|
||||
$AlertEscalationTimer.stop()
|
||||
if state == "suspicion":
|
||||
state = "pursue_start"
|
||||
$StateChangeTimer.start(state_change_cooldown)
|
||||
overheadstatus.set_timer(-1)
|
||||
overheadstatus.set_exclamationmark()
|
||||
|
||||
|
||||
func _on_waypoint_pause_timer_timeout() -> void:
|
||||
$WaypointPauseTimer.stop()
|
||||
if paused:
|
||||
paused = false
|
||||
1
entities/npc_backup.gd.uid
Normal file
1
entities/npc_backup.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://drkv453di207j
|
||||
819
entities/player.tscn
Normal file
819
entities/player.tscn
Normal file
@@ -0,0 +1,819 @@
|
||||
[gd_scene load_steps=46 format=3 uid="uid://cr2ersq7g6q6f"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cf54mpemercku" path="res://scripts/player.gd" id="1_hn6di"]
|
||||
[ext_resource type="Script" uid="uid://dlqj8j4c0bk6x" path="res://scripts/springarmpivot.gd" id="2_f8ihf"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://domxqcvtjd4w5" path="res://models/maskmaker_head_teethtest.res" id="3_ajlxp"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://b2tqfkx5xws01" path="res://models/f_casual_torso.res" id="4_7a734"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://dulh2u05niok6" path="res://models/f_casual_feet.res" id="5_6syjw"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://fidd5byr6t8k" path="res://models/f_casual_legs.res" id="6_7eie4"]
|
||||
[ext_resource type="Animation" uid="uid://jbp27ebqqosr" path="res://models/animations/maskmaker_trueform/Death.res" id="7_f4uup"]
|
||||
[ext_resource type="Script" uid="uid://bt61fg1c4tsqc" path="res://scripts/itemhold_boneattachpoint.gd" id="7_sn2x3"]
|
||||
[ext_resource type="Animation" uid="uid://vusgjwf3d0yd" path="res://models/animations/maskmaker_trueform/Gun_Shoot.res" id="8_tfo1v"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://w0jl7jy3oufh" path="res://models/props/mug.res" id="8_y10x8"]
|
||||
[ext_resource type="Animation" uid="uid://bnudv35afdjgd" path="res://models/animations/maskmaker_trueform/HitRecieve.res" id="9_m4wbt"]
|
||||
[ext_resource type="Animation" uid="uid://f62jxev0nrm8" path="res://models/animations/maskmaker_trueform/HitRecieve_2.res" id="10_b7cli"]
|
||||
[ext_resource type="Animation" uid="uid://bi36j4ou7kqnl" path="res://models/animations/maskmaker_trueform/Idle.res" id="11_iaw83"]
|
||||
[ext_resource type="Animation" uid="uid://dijis6d0emvch" path="res://models/animations/maskmaker_trueform/Idle_Gun.res" id="12_1pw34"]
|
||||
[ext_resource type="Animation" uid="uid://dwmu82kji6tef" path="res://models/animations/maskmaker_trueform/Idle_Gun_Pointing.res" id="13_sok22"]
|
||||
[ext_resource type="Animation" uid="uid://dybkfslpyyobw" path="res://models/animations/maskmaker_trueform/Idle_Gun_Shoot.res" id="14_yl87s"]
|
||||
[ext_resource type="Animation" uid="uid://blhu58fyhcgyp" path="res://models/animations/maskmaker_trueform/Idle_Neutral.res" id="15_yp6jd"]
|
||||
[ext_resource type="Animation" uid="uid://7u7bmue6r57k" path="res://models/animations/maskmaker_trueform/Idle_Sword.res" id="16_vx2rq"]
|
||||
[ext_resource type="Animation" uid="uid://c5fbhuxvegbe4" path="res://models/animations/maskmaker_trueform/Interact.res" id="17_ok2yj"]
|
||||
[ext_resource type="Animation" uid="uid://dxrdux26vwnqx" path="res://models/animations/maskmaker_trueform/Kick_Left.res" id="18_pgq6x"]
|
||||
[ext_resource type="Animation" uid="uid://djasroa8v31cw" path="res://models/animations/maskmaker_trueform/Kick_Right.res" id="19_a0x8u"]
|
||||
[ext_resource type="Animation" uid="uid://ba3le0rakjef4" path="res://models/animations/maskmaker_trueform/Punch_Left.res" id="20_tbysw"]
|
||||
[ext_resource type="Animation" uid="uid://vy5oud37qved" path="res://models/animations/maskmaker_trueform/Punch_Right.res" id="21_o8mob"]
|
||||
[ext_resource type="Animation" uid="uid://dn7smrqyyh87m" path="res://models/animations/maskmaker_trueform/Roll.res" id="22_wddmx"]
|
||||
[ext_resource type="Animation" uid="uid://b0klplxkilipl" path="res://models/animations/maskmaker_trueform/Run.res" id="23_mn80a"]
|
||||
[ext_resource type="Animation" uid="uid://ct327pdmg7bok" path="res://models/animations/maskmaker_trueform/Run_Back.res" id="24_6v4wt"]
|
||||
[ext_resource type="Animation" uid="uid://du5xqj5vsrp4j" path="res://models/animations/maskmaker_trueform/Run_Left.res" id="25_htvtb"]
|
||||
[ext_resource type="Animation" uid="uid://obhs8ck5losv" path="res://models/animations/maskmaker_trueform/Run_Right.res" id="26_bay54"]
|
||||
[ext_resource type="Animation" uid="uid://dvlc55uhudiy4" path="res://models/animations/maskmaker_trueform/Run_Shoot.res" id="27_d38uh"]
|
||||
[ext_resource type="Animation" uid="uid://dyjilyqxsubny" path="res://models/animations/maskmaker_trueform/Sword_Slash.res" id="28_uypnh"]
|
||||
[ext_resource type="Animation" uid="uid://bhl18hdb88aee" path="res://models/animations/maskmaker_trueform/Walk.res" id="29_8imsx"]
|
||||
[ext_resource type="Animation" uid="uid://cmessh42b7k3e" path="res://models/animations/maskmaker_trueform/Wave.res" id="30_xqtbc"]
|
||||
[ext_resource type="Animation" uid="uid://bwn4wjtgstxjn" path="res://models/animations/maskmaker_trueform/crouch/Idle_Neutral.res" id="31_t1krq"]
|
||||
[ext_resource type="Animation" uid="uid://o87efrly0cww" path="res://models/animations/maskmaker_trueform/crouch/Walk.res" id="32_06nbx"]
|
||||
[ext_resource type="Animation" uid="uid://1rygf1noof4t" path="res://models/animations/idleneutral_grab.res" id="33_7kmwv"]
|
||||
[ext_resource type="Animation" uid="uid://bc83kd3ixiumv" path="res://models/animations/idleneutral_grablow.res" id="34_pt6f3"]
|
||||
[ext_resource type="PackedScene" uid="uid://mmfinssr21yy" path="res://entities/note.tscn" id="37_1sc42"]
|
||||
[ext_resource type="PackedScene" uid="uid://d2nji886vjn5x" path="res://entities/hud.tscn" id="38_0t50q"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_k6p7c"]
|
||||
radius = 0.283343
|
||||
height = 1.84319
|
||||
|
||||
[sub_resource type="Skin" id="Skin_ko28d"]
|
||||
resource_name = "Skin"
|
||||
bind_count = 62
|
||||
bind/0/name = &"Root"
|
||||
bind/0/bone = -1
|
||||
bind/0/pose = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.0722887)
|
||||
bind/1/name = &"Body"
|
||||
bind/1/bone = -1
|
||||
bind/1/pose = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000453209, -0.973595, -0.0682938)
|
||||
bind/2/name = &"Hips"
|
||||
bind/2/bone = -1
|
||||
bind/2/pose = Transform3D(1, 0, 0, 0, 0.990359, -0.138524, 0, 0.138524, 0.990359, 0.000343775, -0.981851, -0.21588)
|
||||
bind/3/name = &"Abdomen"
|
||||
bind/3/bone = -1
|
||||
bind/3/pose = Transform3D(1, 0, 0, 0, 0.984263, -0.176709, 0, 0.176709, 0.984263, 0.000343775, -1.0788, -0.257781)
|
||||
bind/4/name = &"Torso"
|
||||
bind/4/bone = -1
|
||||
bind/4/pose = Transform3D(1, 2.27619e-10, -2.23185e-10, -2.23257e-10, 0.999812, 0.0193551, 2.27548e-10, -0.0193551, 0.999813, 0.000343775, -1.24743, -0.0138942)
|
||||
bind/5/name = &"Chest"
|
||||
bind/5/bone = -1
|
||||
bind/5/pose = Transform3D(1, 4.10855e-10, -4.37478e-10, -4.02495e-10, 0.999821, 0.0189413, 4.45182e-10, -0.0189413, 0.999821, 0.000343775, -1.37783, -0.0144646)
|
||||
bind/6/name = &"Neck"
|
||||
bind/6/bone = -1
|
||||
bind/6/pose = Transform3D(1, 3.40105e-12, -8.3216e-17, -3.40109e-12, 1, 1.49012e-08, 8.32604e-17, 1.86264e-09, 1, 0.000343775, -1.51053, -0.0430837)
|
||||
bind/7/name = &"Head"
|
||||
bind/7/bone = -1
|
||||
bind/7/pose = Transform3D(1, 1.7953e-11, 3.34387e-19, -1.7953e-11, 1, 1.86264e-08, -6.33738e-21, -1.86265e-09, 1, 0.000343775, -1.58726, -0.0430837)
|
||||
bind/8/name = &"Shoulder.L"
|
||||
bind/8/bone = -1
|
||||
bind/8/pose = Transform3D(0.315386, -0.417634, 0.852123, 0.852123, 0.519819, -0.0606171, -0.417634, 0.745232, 0.519819, 0.514713, -0.783112, -1.05758)
|
||||
bind/9/name = &"UpperArm.L"
|
||||
bind/9/bone = -1
|
||||
bind/9/pose = Transform3D(0.0173546, 5.90784e-08, 0.999849, 0.999849, -3.08322e-08, -0.0173545, -5.95957e-08, 1, 1.03441e-09, -0.0618606, -0.116381, -1.44321)
|
||||
bind/10/name = &"LowerArm.L"
|
||||
bind/10/bone = -1
|
||||
bind/10/pose = Transform3D(-0.150446, -0.00470564, 0.988607, 0.988607, 0.00404359, 0.150465, -0.00470565, 0.999981, 0.00404374, 0.0016755, -0.344874, -1.44184)
|
||||
bind/11/name = &"Wrist.L"
|
||||
bind/11/bone = -1
|
||||
bind/11/pose = Transform3D(-0.0466739, -0.0230136, 0.998645, 0.998645, 0.0219575, 0.04718, -0.0230136, 0.999494, 0.0219576, -0.031683, -0.602654, -1.43239)
|
||||
bind/12/name = &"Index1.L"
|
||||
bind/12/bone = -1
|
||||
bind/12/pose = Transform3D(-0.22222, 0.0991753, 0.969939, 0.969939, -0.0787045, 0.230267, 0.0991753, 0.991953, -0.0787043, -0.101181, -0.484345, -1.4848)
|
||||
bind/13/name = &"Index2.L"
|
||||
bind/13/bone = -1
|
||||
bind/13/pose = Transform3D(-0.0637885, -0.175647, 0.982384, 0.982384, 0.162206, 0.0927905, -0.175647, 0.970998, 0.162206, 0.17896, -0.943403, -1.28814)
|
||||
bind/14/name = &"Index3.L"
|
||||
bind/14/bone = -1
|
||||
bind/14/pose = Transform3D(-0.0402602, -0.138586, 0.989532, 0.989532, 0.131828, 0.058723, -0.138586, 0.981537, 0.131828, 0.107208, -0.932521, -1.32711)
|
||||
bind/15/name = &"Index4.L"
|
||||
bind/15/bone = -1
|
||||
bind/15/pose = Transform3D(-0.0336518, -0.149045, 0.988257, 0.988258, 0.1425, 0.0551431, -0.149045, 0.978509, 0.1425, 0.117374, -0.97515, -1.316)
|
||||
bind/16/name = &"Middle1.L"
|
||||
bind/16/bone = -1
|
||||
bind/16/pose = Transform3D(-0.0139441, 0.000922917, 0.999902, 0.999902, -0.000910214, 0.0139449, 0.000922909, 0.999999, -0.000910068, -0.085842, -0.594478, -1.44523)
|
||||
bind/17/name = &"Middle2.L"
|
||||
bind/17/bone = -1
|
||||
bind/17/pose = Transform3D(0.0118899, -0.0934291, 0.995555, 0.995555, 0.0941329, -0.00305578, -0.0934291, 0.991166, 0.0941331, 0.0324193, -0.846918, -1.37404)
|
||||
bind/18/name = &"Middle3.L"
|
||||
bind/18/bone = -1
|
||||
bind/18/pose = Transform3D(0.00156214, -0.0608787, 0.998144, 0.998144, 0.0608608, 0.00214992, -0.0608788, 0.996288, 0.0608609, -0.00718818, -0.840356, -1.40284)
|
||||
bind/19/name = &"Middle4.L"
|
||||
bind/19/bone = -1
|
||||
bind/19/pose = Transform3D(0.00466139, -0.120823, 0.992663, 0.992663, 0.120498, 0.0100053, -0.120823, 0.985334, 0.120499, 0.0778364, -0.962437, -1.34508)
|
||||
bind/20/name = &"Ring1.L"
|
||||
bind/20/bone = -1
|
||||
bind/20/pose = Transform3D(0.209526, 0.0329601, 0.977247, 0.977247, -0.040748, -0.208152, 0.0329601, 0.998626, -0.0407478, -0.262891, -0.50284, -1.45859)
|
||||
bind/21/name = &"Ring2.L"
|
||||
bind/21/bone = -1
|
||||
bind/21/pose = Transform3D(0.162865, -0.0851959, 0.982963, 0.982963, 0.100037, -0.154194, -0.085196, 0.99133, 0.100037, -0.0599658, -0.832546, -1.37364)
|
||||
bind/22/name = &"Ring3.L"
|
||||
bind/22/bone = -1
|
||||
bind/22/pose = Transform3D(0.138285, -0.106623, 0.984636, 0.984636, 0.121833, -0.125092, -0.106623, 0.986807, 0.121833, -0.0108729, -0.900001, -1.35255)
|
||||
bind/23/name = &"Ring4.L"
|
||||
bind/23/bone = -1
|
||||
bind/23/pose = Transform3D(0.15623, -0.10652, 0.98196, 0.98196, 0.123966, -0.142783, -0.10652, 0.986552, 0.123966, -0.0247743, -0.932157, -1.35239)
|
||||
bind/24/name = &"Pinky1.L"
|
||||
bind/24/bone = -1
|
||||
bind/24/pose = Transform3D(0.400302, 0.0282232, 0.915949, 0.915949, -0.0431067, -0.398973, 0.0282232, 0.998672, -0.0431066, -0.363786, -0.445277, -1.45562)
|
||||
bind/25/name = &"Pinky2.L"
|
||||
bind/25/bone = -1
|
||||
bind/25/pose = Transform3D(0.279773, -0.0774391, 0.956938, 0.956938, 0.10289, -0.271447, -0.0774391, 0.991674, 0.10289, -0.129102, -0.806098, -1.3783)
|
||||
bind/26/name = &"Pinky3.L"
|
||||
bind/26/bone = -1
|
||||
bind/26/pose = Transform3D(0.30814, -0.0885746, 0.947209, 0.947209, 0.121265, -0.296801, -0.0885746, 0.98866, 0.121265, -0.133233, -0.850312, -1.3666)
|
||||
bind/27/name = &"Pinky4.L"
|
||||
bind/27/bone = -1
|
||||
bind/27/pose = Transform3D(0.309437, -0.10739, 0.944837, 0.944837, 0.146932, -0.292736, -0.10739, 0.9833, 0.146932, -0.106931, -0.912524, -1.34554)
|
||||
bind/28/name = &"Thumb1.L"
|
||||
bind/28/bone = -1
|
||||
bind/28/pose = Transform3D(-0.207698, 0.764833, 0.609829, 0.609829, -0.386204, 0.692065, 0.764833, 0.515632, -0.386204, -1.03811, 0.131166, -1.16386)
|
||||
bind/29/name = &"Thumb2.L"
|
||||
bind/29/bone = -1
|
||||
bind/29/pose = Transform3D(-0.547028, 0.358026, 0.756688, 0.756689, -0.175119, 0.629885, 0.358026, 0.917143, -0.175119, -0.266545, -0.33533, -1.50036)
|
||||
bind/30/name = &"Thumb3.L"
|
||||
bind/30/bone = -1
|
||||
bind/30/pose = Transform3D(-0.497269, 0.208158, 0.842255, 0.842255, -0.117095, 0.526209, 0.208158, 0.971061, -0.117094, -0.103433, -0.487722, -1.48588)
|
||||
bind/31/name = &"Shoulder.R"
|
||||
bind/31/bone = -1
|
||||
bind/31/pose = Transform3D(0.315386, 0.417634, -0.852123, -0.852123, 0.519819, -0.0606171, 0.417634, 0.745232, 0.519819, -0.514713, -0.783112, -1.05758)
|
||||
bind/32/name = &"UpperArm.R"
|
||||
bind/32/bone = -1
|
||||
bind/32/pose = Transform3D(0.0173546, -5.90784e-08, -0.999849, -0.999849, -3.08322e-08, -0.0173545, 5.95957e-08, 1, 1.03441e-09, 0.0618606, -0.116381, -1.44321)
|
||||
bind/33/name = &"LowerArm.R"
|
||||
bind/33/bone = -1
|
||||
bind/33/pose = Transform3D(-0.150446, 0.00470564, -0.988607, -0.988607, 0.00404359, 0.150465, 0.00470565, 0.999981, 0.00404374, -0.0016755, -0.344874, -1.44184)
|
||||
bind/34/name = &"Wrist.R"
|
||||
bind/34/bone = -1
|
||||
bind/34/pose = Transform3D(-0.0466739, 0.0230136, -0.998645, -0.998645, 0.0219575, 0.04718, 0.0230136, 0.999494, 0.0219576, 0.031683, -0.602654, -1.43239)
|
||||
bind/35/name = &"Index1.R"
|
||||
bind/35/bone = -1
|
||||
bind/35/pose = Transform3D(-0.22222, -0.0991753, -0.969939, -0.969939, -0.0787045, 0.230267, -0.0991753, 0.991953, -0.0787043, 0.101181, -0.484345, -1.4848)
|
||||
bind/36/name = &"Index2.R"
|
||||
bind/36/bone = -1
|
||||
bind/36/pose = Transform3D(-0.0637885, 0.175647, -0.982384, -0.982384, 0.162206, 0.0927905, 0.175647, 0.970998, 0.162206, -0.17896, -0.943403, -1.28814)
|
||||
bind/37/name = &"Index3.R"
|
||||
bind/37/bone = -1
|
||||
bind/37/pose = Transform3D(-0.0402602, 0.138586, -0.989532, -0.989532, 0.131828, 0.058723, 0.138586, 0.981537, 0.131828, -0.107208, -0.932521, -1.32711)
|
||||
bind/38/name = &"Index4.R"
|
||||
bind/38/bone = -1
|
||||
bind/38/pose = Transform3D(-0.0336518, 0.149045, -0.988257, -0.988258, 0.1425, 0.0551431, 0.149045, 0.978509, 0.1425, -0.117374, -0.97515, -1.316)
|
||||
bind/39/name = &"Middle1.R"
|
||||
bind/39/bone = -1
|
||||
bind/39/pose = Transform3D(-0.0139441, -0.000922917, -0.999902, -0.999902, -0.000910214, 0.0139449, -0.000922909, 0.999999, -0.000910068, 0.085842, -0.594478, -1.44523)
|
||||
bind/40/name = &"Middle2.R"
|
||||
bind/40/bone = -1
|
||||
bind/40/pose = Transform3D(0.0118899, 0.0934291, -0.995555, -0.995555, 0.0941329, -0.00305578, 0.0934291, 0.991166, 0.0941331, -0.0324193, -0.846918, -1.37404)
|
||||
bind/41/name = &"Middle3.R"
|
||||
bind/41/bone = -1
|
||||
bind/41/pose = Transform3D(0.00156214, 0.0608787, -0.998144, -0.998144, 0.0608608, 0.00214992, 0.0608788, 0.996288, 0.0608609, 0.00718818, -0.840356, -1.40284)
|
||||
bind/42/name = &"Middle4.R"
|
||||
bind/42/bone = -1
|
||||
bind/42/pose = Transform3D(0.00466139, 0.120823, -0.992663, -0.992663, 0.120498, 0.0100053, 0.120823, 0.985334, 0.120499, -0.0778364, -0.962437, -1.34508)
|
||||
bind/43/name = &"Ring1.R"
|
||||
bind/43/bone = -1
|
||||
bind/43/pose = Transform3D(0.209526, -0.0329601, -0.977247, -0.977247, -0.040748, -0.208152, -0.0329601, 0.998626, -0.0407478, 0.262891, -0.50284, -1.45859)
|
||||
bind/44/name = &"Ring2.R"
|
||||
bind/44/bone = -1
|
||||
bind/44/pose = Transform3D(0.162865, 0.0851959, -0.982963, -0.982963, 0.100037, -0.154194, 0.085196, 0.99133, 0.100037, 0.0599658, -0.832546, -1.37364)
|
||||
bind/45/name = &"Ring3.R"
|
||||
bind/45/bone = -1
|
||||
bind/45/pose = Transform3D(0.138285, 0.106623, -0.984636, -0.984636, 0.121833, -0.125092, 0.106623, 0.986807, 0.121833, 0.0108729, -0.900001, -1.35255)
|
||||
bind/46/name = &"Ring4.R"
|
||||
bind/46/bone = -1
|
||||
bind/46/pose = Transform3D(0.15623, 0.10652, -0.98196, -0.98196, 0.123966, -0.142783, 0.10652, 0.986552, 0.123966, 0.0247743, -0.932157, -1.35239)
|
||||
bind/47/name = &"Pinky1.R"
|
||||
bind/47/bone = -1
|
||||
bind/47/pose = Transform3D(0.400302, -0.0282232, -0.915949, -0.915949, -0.0431067, -0.398973, -0.0282232, 0.998672, -0.0431066, 0.363786, -0.445277, -1.45562)
|
||||
bind/48/name = &"Pinky2.R"
|
||||
bind/48/bone = -1
|
||||
bind/48/pose = Transform3D(0.279773, 0.0774391, -0.956938, -0.956938, 0.10289, -0.271447, 0.0774391, 0.991674, 0.10289, 0.129102, -0.806098, -1.3783)
|
||||
bind/49/name = &"Pinky3.R"
|
||||
bind/49/bone = -1
|
||||
bind/49/pose = Transform3D(0.30814, 0.0885746, -0.947209, -0.947209, 0.121265, -0.296801, 0.0885746, 0.98866, 0.121265, 0.133233, -0.850312, -1.3666)
|
||||
bind/50/name = &"Pinky4.R"
|
||||
bind/50/bone = -1
|
||||
bind/50/pose = Transform3D(0.309437, 0.10739, -0.944837, -0.944837, 0.146932, -0.292736, 0.10739, 0.9833, 0.146932, 0.106931, -0.912524, -1.34554)
|
||||
bind/51/name = &"Thumb1.R"
|
||||
bind/51/bone = -1
|
||||
bind/51/pose = Transform3D(-0.207698, -0.764833, -0.609829, -0.609829, -0.386204, 0.692065, -0.764833, 0.515632, -0.386204, 1.03811, 0.131166, -1.16386)
|
||||
bind/52/name = &"Thumb2.R"
|
||||
bind/52/bone = -1
|
||||
bind/52/pose = Transform3D(-0.547028, -0.358026, -0.756688, -0.756689, -0.175119, 0.629885, -0.358026, 0.917143, -0.175119, 0.266545, -0.33533, -1.50036)
|
||||
bind/53/name = &"Thumb3.R"
|
||||
bind/53/bone = -1
|
||||
bind/53/pose = Transform3D(-0.497269, -0.208158, -0.842255, -0.842255, -0.117095, 0.526209, -0.208158, 0.971061, -0.117094, 0.103433, -0.487722, -1.48588)
|
||||
bind/54/name = &"UpperLeg.L"
|
||||
bind/54/bone = -1
|
||||
bind/54/pose = Transform3D(1, 0, 0, 0, -0.996133, 0.0878603, 0, -0.0878603, -0.99613, -0.096859, 1.02896, 0.135994)
|
||||
bind/55/name = &"LowerLeg.L"
|
||||
bind/55/bone = -1
|
||||
bind/55/pose = Transform3D(1, 0, 0, 0, -0.99888, -0.0473063, 0, 0.0473067, -0.998877, -0.096859, 0.560489, 0.0609495)
|
||||
bind/56/name = &"UpperLeg.R"
|
||||
bind/56/bone = -1
|
||||
bind/56/pose = Transform3D(1, 0, 0, 0, -0.996133, 0.0878603, 0, -0.0878603, -0.99613, 0.096859, 1.02896, 0.135994)
|
||||
bind/57/name = &"LowerLeg.R"
|
||||
bind/57/bone = -1
|
||||
bind/57/pose = Transform3D(1, 0, 0, 0, -0.99888, -0.0473063, 0, 0.0473067, -0.998877, 0.096859, 0.560489, 0.0609495)
|
||||
bind/58/name = &"Foot.L"
|
||||
bind/58/bone = -1
|
||||
bind/58/pose = Transform3D(1, 0, 0, 0, 0.00534761, 0.999986, 0, -0.999986, 0.00534756, -0.096859, -0.0622163, 0.0224193)
|
||||
bind/59/name = &"PT.L"
|
||||
bind/59/bone = -1
|
||||
bind/59/pose = Transform3D(1, 0, 0, 0, 0.999986, -0.00534752, 0, 0.00534752, 0.999986, -0.096859, -0.486532, -0.760344)
|
||||
bind/60/name = &"Foot.R"
|
||||
bind/60/bone = -1
|
||||
bind/60/pose = Transform3D(1, 0, 0, 0, 0.00534761, 0.999986, 0, -0.999986, 0.00534756, 0.096859, -0.0622163, 0.0224193)
|
||||
bind/61/name = &"PT.R"
|
||||
bind/61/bone = -1
|
||||
bind/61/pose = Transform3D(1, 0, 0, 0, 0.999986, -0.00534752, 0, 0.00534752, 0.999986, 0.096859, -0.486532, -0.760344)
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_q8qsp"]
|
||||
radius = 0.25
|
||||
height = 1.6
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_62lcb"]
|
||||
radius = 0.25
|
||||
height = 1.0
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_y10x8"]
|
||||
height = 1.0
|
||||
radius = 1.1
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_1sc42"]
|
||||
height = 0.7
|
||||
radius = 1.1
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_11wwj"]
|
||||
_data = {
|
||||
&"Death": ExtResource("7_f4uup"),
|
||||
&"Grab": ExtResource("33_7kmwv"),
|
||||
&"GrabLow": ExtResource("34_pt6f3"),
|
||||
&"Gun_Shoot": ExtResource("8_tfo1v"),
|
||||
&"HitRecieve": ExtResource("9_m4wbt"),
|
||||
&"HitRecieve_2": ExtResource("10_b7cli"),
|
||||
&"Idle": ExtResource("11_iaw83"),
|
||||
&"Idle_Crouch": ExtResource("31_t1krq"),
|
||||
&"Idle_Gun": ExtResource("12_1pw34"),
|
||||
&"Idle_Gun_Pointing": ExtResource("13_sok22"),
|
||||
&"Idle_Gun_Shoot": ExtResource("14_yl87s"),
|
||||
&"Idle_Neutral": ExtResource("15_yp6jd"),
|
||||
&"Idle_Sword": ExtResource("16_vx2rq"),
|
||||
&"Interact": ExtResource("17_ok2yj"),
|
||||
&"Kick_Left": ExtResource("18_pgq6x"),
|
||||
&"Kick_Right": ExtResource("19_a0x8u"),
|
||||
&"Punch_Left": ExtResource("20_tbysw"),
|
||||
&"Punch_Right": ExtResource("21_o8mob"),
|
||||
&"Roll": ExtResource("22_wddmx"),
|
||||
&"Run": ExtResource("23_mn80a"),
|
||||
&"Run_Back": ExtResource("24_6v4wt"),
|
||||
&"Run_Left": ExtResource("25_htvtb"),
|
||||
&"Run_Right": ExtResource("26_bay54"),
|
||||
&"Run_Shoot": ExtResource("27_d38uh"),
|
||||
&"Sword_Slash": ExtResource("28_uypnh"),
|
||||
&"Walk": ExtResource("29_8imsx"),
|
||||
&"Walk_Crouch": ExtResource("32_06nbx"),
|
||||
&"Wave": ExtResource("30_xqtbc")
|
||||
}
|
||||
|
||||
[node name="Player" type="CharacterBody3D"]
|
||||
script = ExtResource("1_hn6di")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.908729, 0)
|
||||
shape = SubResource("CapsuleShape3D_k6p7c")
|
||||
debug_fill = false
|
||||
|
||||
[node name="SpringArmPivot" type="Node3D" parent="."]
|
||||
script = ExtResource("2_f8ihf")
|
||||
|
||||
[node name="SpringArm3D" type="SpringArm3D" parent="SpringArmPivot"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.35, 0)
|
||||
spring_length = 2.0
|
||||
margin = 0.2
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="SpringArmPivot/SpringArm3D"]
|
||||
|
||||
[node name="CharacterArmature" type="Node3D" parent="."]
|
||||
|
||||
[node name="Skeleton3D" type="Skeleton3D" parent="CharacterArmature"]
|
||||
bones/0/name = "Root"
|
||||
bones/0/parent = -1
|
||||
bones/0/rest = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.0722887)
|
||||
bones/0/enabled = true
|
||||
bones/0/position = Vector3(0, 0, 0.0722887)
|
||||
bones/0/rotation = Quaternion(0, 0, 0, 1)
|
||||
bones/0/scale = Vector3(1, 1, 1)
|
||||
bones/1/name = "Body"
|
||||
bones/1/parent = 0
|
||||
bones/1/rest = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.000453209, 0.973595, -0.00399487)
|
||||
bones/1/enabled = true
|
||||
bones/1/position = Vector3(0.000585492, 0.965633, -0.0046314)
|
||||
bones/1/rotation = Quaternion(0.00543523, 0.000132287, 0.000132291, 0.999985)
|
||||
bones/1/scale = Vector3(1, 1, 1)
|
||||
bones/2/name = "Hips"
|
||||
bones/2/parent = 1
|
||||
bones/2/rest = Transform3D(1, 0, 0, 0, 0.990359, 0.138524, 0, -0.138524, 0.990359, -0.000796984, 0.0286949, 0.00949547)
|
||||
bones/2/enabled = true
|
||||
bones/2/position = Vector3(-0.000796984, 0.0286949, 0.00949547)
|
||||
bones/2/rotation = Quaternion(-0.0694294, 0, 0, 0.997587)
|
||||
bones/2/scale = Vector3(1, 1, 1)
|
||||
bones/3/name = "Abdomen"
|
||||
bones/3/parent = 2
|
||||
bones/3/rest = Transform3D(1, 0, 0, 0, 0.999252, 0.0386618, 0, -0.0386618, 0.999252, 2.91038e-11, 0.106105, 1.11759e-08)
|
||||
bones/3/enabled = true
|
||||
bones/3/position = Vector3(2.91038e-11, 0.106105, 1.11759e-08)
|
||||
bones/3/rotation = Quaternion(-0.0193345, -3.53179e-12, 5.52629e-12, 0.999813)
|
||||
bones/3/scale = Vector3(1, 1, 1)
|
||||
bones/4/name = "Torso"
|
||||
bones/4/parent = 3
|
||||
bones/4/rest = Transform3D(1, -2.23257e-10, 2.27549e-10, 2.63476e-10, 0.980658, -0.195727, -1.7945e-10, 0.195727, 0.980658, 0, 0.141789, -3.72529e-09)
|
||||
bones/4/enabled = true
|
||||
bones/4/position = Vector3(0, 0.141789, -3.72529e-09)
|
||||
bones/4/rotation = Quaternion(0.0983401, 9.99208e-11, 1.27301e-10, 0.995153)
|
||||
bones/4/scale = Vector3(1, 1, 1)
|
||||
bones/5/name = "Chest"
|
||||
bones/5/parent = 4
|
||||
bones/5/rest = Transform3D(1, -1.79144e-10, 2.17726e-10, 1.79054e-10, 1, 0.000413938, -2.178e-10, -0.000413938, 1, -4.47973e-11, 0.130401, -7.82222e-14)
|
||||
bones/5/enabled = true
|
||||
bones/5/position = Vector3(-4.47973e-11, 0.130401, -7.82222e-14)
|
||||
bones/5/rotation = Quaternion(-0.00020697, 1.13659e-10, 1.00917e-10, 1)
|
||||
bones/5/scale = Vector3(1, 1, 1)
|
||||
bones/6/name = "Neck"
|
||||
bones/6/parent = 5
|
||||
bones/6/rest = Transform3D(1, 4.07454e-10, -4.37478e-10, -3.99094e-10, 0.999821, 0.0189413, 4.45117e-10, -0.0189413, 0.999821, 1.96848e-11, 0.133251, -1.8628e-09)
|
||||
bones/6/enabled = true
|
||||
bones/6/position = Vector3(1.96848e-11, 0.133251, -1.8628e-09)
|
||||
bones/6/rotation = Quaternion(-0.00947105, -2.23828e-10, -2.12132e-10, 0.999955)
|
||||
bones/6/scale = Vector3(1, 1, 1)
|
||||
bones/7/name = "Head"
|
||||
bones/7/parent = 6
|
||||
bones/7/rest = Transform3D(1, -1.45519e-11, -8.32794e-17, 1.45519e-11, 1, -3.72529e-09, 8.33336e-17, 3.72529e-09, 1, 5.39835e-12, 0.0767286, -7.68786e-10)
|
||||
bones/7/enabled = true
|
||||
bones/7/position = Vector3(5.39835e-12, 0.0767286, -7.68786e-10)
|
||||
bones/7/rotation = Quaternion(-0.0245108, -1.63076e-10, 0.000127055, 0.9997)
|
||||
bones/7/scale = Vector3(1, 1, 1)
|
||||
bones/8/name = "Shoulder.L"
|
||||
bones/8/parent = 5
|
||||
bones/8/rest = Transform3D(0.315385, 0.852123, -0.417634, -0.401419, 0.518577, 0.754944, 0.859881, -0.0704522, 0.50561, 0.0636353, 0.0333092, 0.0224966)
|
||||
bones/8/enabled = true
|
||||
bones/8/position = Vector3(0.0659633, 0.0343806, 0.0205)
|
||||
bones/8/rotation = Quaternion(-0.254066, -0.409493, -0.395682, 0.781794)
|
||||
bones/8/scale = Vector3(1, 1, 1)
|
||||
bones/9/name = "UpperArm.L"
|
||||
bones/9/parent = 8
|
||||
bones/9/rest = Transform3D(0.857468, 0.30055, -0.417634, -0.0458198, 0.853047, 0.519819, 0.512493, -0.426592, 0.745232, -4.84288e-08, 0.063542, 7.45058e-08)
|
||||
bones/9/enabled = true
|
||||
bones/9/position = Vector3(-4.84288e-08, 0.063542, 7.45058e-08)
|
||||
bones/9/rotation = Quaternion(-0.756, -0.244534, 0.0183559, 0.606902)
|
||||
bones/9/scale = Vector3(1, 1, 1)
|
||||
bones/10/name = "LowerArm.L"
|
||||
bones/10/parent = 9
|
||||
bones/10/rest = Transform3D(0.985847, 0.167599, 0.00396147, -0.16758, 0.985847, -0.00477506, -0.0047057, 0.00404361, 0.999981, -3.67848e-09, 0.217008, -1.98715e-08)
|
||||
bones/10/enabled = true
|
||||
bones/10/position = Vector3(-3.67848e-09, 0.217008, -1.98715e-08)
|
||||
bones/10/rotation = Quaternion(-0.214968, 0.247513, -0.150591, 0.932657)
|
||||
bones/10/scale = Vector3(1, 1, 1)
|
||||
bones/11/name = "Wrist.L"
|
||||
bones/11/parent = 10
|
||||
bones/11/rest = Transform3D(0.994398, -0.103703, 0.0204664, 0.104026, 0.994455, -0.0154059, -0.0187553, 0.0174486, 0.999672, -8.26549e-09, 0.235667, 5.16011e-08)
|
||||
bones/11/enabled = true
|
||||
bones/11/position = Vector3(-8.26549e-09, 0.235667, 5.16011e-08)
|
||||
bones/11/rotation = Quaternion(0.00930065, 0.00630404, 0.0231916, 0.999668)
|
||||
bones/11/scale = Vector3(1, 1, 1)
|
||||
bones/12/name = "Index1.L"
|
||||
bones/12/parent = 11
|
||||
bones/12/rest = Transform3D(0.976715, 0.186496, -0.106055, -0.173979, 0.977761, 0.117108, 0.125537, -0.0959302, 0.98744, 9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/12/enabled = true
|
||||
bones/12/position = Vector3(9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/12/rotation = Quaternion(-0.0536506, -0.0583229, -0.0907802, 0.992713)
|
||||
bones/12/scale = Vector3(1, 1, 1)
|
||||
bones/13/name = "Index2.L"
|
||||
bones/13/parent = 12
|
||||
bones/13/rest = Transform3D(0.949609, -0.112217, 0.292661, 0.178164, 0.961453, -0.209438, -0.257878, 0.251026, 0.932998, -1.49012e-08, 0.121023, -1.88127e-07)
|
||||
bones/13/enabled = true
|
||||
bones/13/position = Vector3(-1.49012e-08, 0.121023, -1.88127e-07)
|
||||
bones/13/rotation = Quaternion(-0.00440123, 0.145898, 0.0930834, 0.984901)
|
||||
bones/13/scale = Vector3(1, 1, 1)
|
||||
bones/14/name = "Index3.L"
|
||||
bones/14/parent = 13
|
||||
bones/14/rest = Transform3D(0.999011, -0.0285874, -0.0340588, 0.0297886, 0.998933, 0.0352993, 0.0330133, -0.0362789, 0.998796, -1.11759e-08, 0.0317744, 5.58794e-09)
|
||||
bones/14/enabled = true
|
||||
bones/14/position = Vector3(-1.11759e-08, 0.0317744, 5.58794e-09)
|
||||
bones/14/rotation = Quaternion(-0.0822602, -0.00279773, 0.0209049, 0.996388)
|
||||
bones/14/scale = Vector3(1, 1, 1)
|
||||
bones/15/name = "Index4.L"
|
||||
bones/15/parent = 14
|
||||
bones/15/rest = Transform3D(0.999923, -0.00497013, 0.0114012, 0.00508561, 0.999936, -0.0101225, -0.0113502, 0.0101797, 0.999884, 1.86265e-09, 0.0286486, 1.43424e-07)
|
||||
bones/15/enabled = true
|
||||
bones/15/position = Vector3(1.86265e-09, 0.0286486, 1.43424e-07)
|
||||
bones/15/rotation = Quaternion(-0.0302401, 0.0127248, 0.00602093, 0.999444)
|
||||
bones/15/scale = Vector3(1, 1, 1)
|
||||
bones/16/name = "Middle1.L"
|
||||
bones/16/parent = 11
|
||||
bones/16/rest = Transform3D(0.999177, -0.0327224, -0.0239655, 0.0332704, 0.999185, 0.0228362, 0.0231987, -0.0236148, 0.999452, 9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/16/enabled = true
|
||||
bones/16/position = Vector3(9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/16/rotation = Quaternion(-0.0116159, -0.0117943, 0.0165027, 0.999727)
|
||||
bones/16/scale = Vector3(1, 1, 1)
|
||||
bones/17/name = "Middle2.L"
|
||||
bones/17/parent = 16
|
||||
bones/17/rest = Transform3D(0.995206, -0.0168507, 0.0963414, 0.0258566, 0.995329, -0.0930094, -0.0943241, 0.0950545, 0.990993, -4.5402e-09, 0.119848, -5.96046e-08)
|
||||
bones/17/enabled = true
|
||||
bones/17/position = Vector3(-4.5402e-09, 0.119848, -5.96046e-08)
|
||||
bones/17/rotation = Quaternion(-0.0535813, 0.0588508, -0.000211704, 0.996828)
|
||||
bones/17/scale = Vector3(1, 1, 1)
|
||||
bones/18/name = "Middle3.L"
|
||||
bones/18/parent = 17
|
||||
bones/18/rest = Transform3D(0.999414, 0.00832194, -0.0332158, -0.00722566, 0.99943, 0.0329894, 0.0334714, -0.0327301, 0.998903, -7.45058e-09, 0.039186, 1.79745e-07)
|
||||
bones/18/enabled = true
|
||||
bones/18/position = Vector3(-7.45058e-09, 0.039186, 1.79745e-07)
|
||||
bones/18/rotation = Quaternion(-0.120008, -0.00437157, -0.0210206, 0.992541)
|
||||
bones/18/scale = Vector3(1, 1, 1)
|
||||
bones/19/name = "Middle4.L"
|
||||
bones/19/parent = 18
|
||||
bones/19/rest = Transform3D(0.998183, 0.00420155, 0.0601002, -0.000566565, 0.998176, -0.0603717, -0.0602442, 0.060228, 0.996365, -6.40284e-09, 0.0391646, 2.10945e-07)
|
||||
bones/19/enabled = true
|
||||
bones/19/position = Vector3(-6.40284e-09, 0.0391646, 2.10945e-07)
|
||||
bones/19/rotation = Quaternion(-0.0190482, 0.0352492, -0.00743691, 0.999169)
|
||||
bones/19/scale = Vector3(1, 1, 1)
|
||||
bones/20/name = "Ring1.L"
|
||||
bones/20/parent = 11
|
||||
bones/20/rest = Transform3D(0.965385, -0.252544, -0.065213, 0.256072, 0.965208, 0.0529203, 0.0495794, -0.0677877, 0.996467, 9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/20/enabled = true
|
||||
bones/20/position = Vector3(9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/20/rotation = Quaternion(-0.030456, -0.0289634, 0.128329, 0.990841)
|
||||
bones/20/scale = Vector3(1, 1, 1)
|
||||
bones/21/name = "Ring2.L"
|
||||
bones/21/parent = 20
|
||||
bones/21/rest = Transform3D(0.991915, 0.0585674, 0.112584, -0.0419745, 0.988618, -0.144475, -0.119764, 0.138581, 0.983083, 1.11759e-08, 0.119257, -3.0268e-09)
|
||||
bones/21/enabled = true
|
||||
bones/21/position = Vector3(1.11759e-08, 0.119257, -3.0268e-09)
|
||||
bones/21/rotation = Quaternion(-0.0439309, 0.106429, -0.0408442, 0.992509)
|
||||
bones/21/scale = Vector3(1, 1, 1)
|
||||
bones/22/name = "Ring3.L"
|
||||
bones/22/parent = 21
|
||||
bones/22/rest = Transform3D(0.999467, 0.0270218, 0.0183202, -0.0265623, 0.999338, -0.0248756, -0.0189802, 0.0243757, 0.999523, -7.45058e-09, 0.0329241, 8.3819e-08)
|
||||
bones/22/enabled = true
|
||||
bones/22/position = Vector3(-7.45058e-09, 0.0329241, 8.3819e-08)
|
||||
bones/22/rotation = Quaternion(-0.119294, 0.0572575, -0.0398883, 0.990404)
|
||||
bones/22/scale = Vector3(1, 1, 1)
|
||||
bones/23/name = "Ring4.L"
|
||||
bones/23/parent = 22
|
||||
bones/23/rest = Transform3D(0.999835, -0.018016, 0.00214171, 0.0180165, 0.999838, -0.000196494, -0.00213782, 0.000235048, 0.999998, 1.86265e-08, 0.0321856, -1.45752e-07)
|
||||
bones/23/enabled = true
|
||||
bones/23/position = Vector3(1.86265e-08, 0.0321856, -1.45752e-07)
|
||||
bones/23/rotation = Quaternion(-0.0748089, 0.0279541, -0.00762858, 0.996777)
|
||||
bones/23/scale = Vector3(1, 1, 1)
|
||||
bones/24/name = "Pinky1.L"
|
||||
bones/24/parent = 11
|
||||
bones/24/rest = Transform3D(0.895374, -0.440192, -0.0673485, 0.443593, 0.894937, 0.0480795, 0.0391085, -0.0729245, 0.99657, 9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/24/enabled = true
|
||||
bones/24/position = Vector3(9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/24/rotation = Quaternion(-0.0310906, -0.0273529, 0.227078, 0.972996)
|
||||
bones/24/scale = Vector3(1, 1, 1)
|
||||
bones/25/name = "Pinky2.L"
|
||||
bones/25/parent = 24
|
||||
bones/25/rest = Transform3D(0.986314, 0.137336, 0.0912315, -0.122196, 0.980371, -0.154728, -0.11069, 0.141463, 0.983736, -7.45058e-09, 0.115961, 1.91852e-07)
|
||||
bones/25/enabled = true
|
||||
bones/25/position = Vector3(-7.45058e-09, 0.115961, 1.91852e-07)
|
||||
bones/25/rotation = Quaternion(-0.0766032, 0.0608134, -0.182085, 0.978406)
|
||||
bones/25/scale = Vector3(1, 1, 1)
|
||||
bones/26/name = "Pinky3.L"
|
||||
bones/26/parent = 25
|
||||
bones/26/rest = Transform3D(0.999488, -0.0284066, 0.0147017, 0.0286406, 0.999462, -0.0159539, -0.0142406, 0.0163668, 0.999765, -3.35276e-08, 0.0257697, 5.44824e-08)
|
||||
bones/26/enabled = true
|
||||
bones/26/position = Vector3(-3.35276e-08, 0.0257697, 5.44824e-08)
|
||||
bones/26/rotation = Quaternion(-0.0894857, -0.0379283, -0.022308, 0.995016)
|
||||
bones/26/scale = Vector3(1, 1, 1)
|
||||
bones/27/name = "Pinky4.L"
|
||||
bones/27/parent = 26
|
||||
bones/27/rest = Transform3D(0.999819, 0.000845239, 0.0189891, -0.000349583, 0.99966, -0.0260903, -0.0190047, 0.026079, 0.999479, 1.67638e-08, 0.0267585, -7.93952e-08)
|
||||
bones/27/enabled = true
|
||||
bones/27/position = Vector3(1.67638e-08, 0.0267585, -7.93952e-08)
|
||||
bones/27/rotation = Quaternion(-0.116958, -0.00965458, -0.00323037, 0.993085)
|
||||
bones/27/scale = Vector3(1, 1, 1)
|
||||
bones/28/name = "Thumb1.L"
|
||||
bones/28/parent = 11
|
||||
bones/28/rest = Transform3D(0.601096, 0.671552, -0.433245, -0.161851, 0.633174, 0.756898, 0.782616, -0.384847, 0.48929, 9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/28/enabled = true
|
||||
bones/28/position = Vector3(9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/28/rotation = Quaternion(-0.317099, -0.317893, -0.180712, 0.875063)
|
||||
bones/28/scale = Vector3(1, 1, 1)
|
||||
bones/29/name = "Thumb2.L"
|
||||
bones/29/parent = 28
|
||||
bones/29/rest = Transform3D(0.848897, 0.0930235, 0.520307, 0.0518132, 0.965005, -0.257064, -0.526012, 0.245179, 0.81437, -9.68575e-08, 0.0828836, -5.21541e-08)
|
||||
bones/29/enabled = true
|
||||
bones/29/position = Vector3(-9.68575e-08, 0.0828836, -5.21541e-08)
|
||||
bones/29/rotation = Quaternion(0.131836, 0.274653, -0.0108175, 0.952401)
|
||||
bones/29/scale = Vector3(1, 1, 1)
|
||||
bones/30/name = "Thumb3.L"
|
||||
bones/30/parent = 29
|
||||
bones/30/rest = Transform3D(0.983871, -0.104484, 0.145192, 0.117794, 0.989281, -0.0862965, -0.13462, 0.102007, 0.985633, 2.98023e-08, 0.0311211, -2.23517e-08)
|
||||
bones/30/enabled = true
|
||||
bones/30/position = Vector3(2.98023e-08, 0.0311211, -2.23517e-08)
|
||||
bones/30/rotation = Quaternion(-0.0596973, 0.0318687, 0.117547, 0.990759)
|
||||
bones/30/scale = Vector3(1, 1, 1)
|
||||
bones/31/name = "Shoulder.R"
|
||||
bones/31/parent = 5
|
||||
bones/31/rest = Transform3D(0.315385, -0.852123, 0.417634, 0.401419, 0.518577, 0.754944, -0.859881, -0.0704522, 0.50561, -0.0629478, 0.0333092, 0.0224966)
|
||||
bones/31/enabled = true
|
||||
bones/31/position = Vector3(-0.0652757, 0.0343808, 0.0205)
|
||||
bones/31/rotation = Quaternion(-0.254066, 0.409492, 0.395682, 0.781794)
|
||||
bones/31/scale = Vector3(1, 1, 1)
|
||||
bones/32/name = "UpperArm.R"
|
||||
bones/32/parent = 31
|
||||
bones/32/rest = Transform3D(0.857468, -0.30055, 0.417634, 0.0458198, 0.853047, 0.519819, -0.512493, -0.426592, 0.745232, 4.84288e-08, 0.063542, 7.45058e-08)
|
||||
bones/32/enabled = true
|
||||
bones/32/position = Vector3(4.84288e-08, 0.063542, 7.45058e-08)
|
||||
bones/32/rotation = Quaternion(-0.749909, 0.249228, -0.0188961, 0.612506)
|
||||
bones/32/scale = Vector3(1, 1, 1)
|
||||
bones/33/name = "LowerArm.R"
|
||||
bones/33/parent = 32
|
||||
bones/33/rest = Transform3D(0.985847, -0.167599, -0.00396147, 0.16758, 0.985847, -0.00477506, 0.0047057, 0.00404361, 0.999981, 3.67848e-09, 0.217008, -1.98715e-08)
|
||||
bones/33/enabled = true
|
||||
bones/33/position = Vector3(3.67848e-09, 0.217008, -1.98715e-08)
|
||||
bones/33/rotation = Quaternion(-0.214967, -0.247513, 0.150591, 0.932657)
|
||||
bones/33/scale = Vector3(1, 1, 1)
|
||||
bones/34/name = "Wrist.R"
|
||||
bones/34/parent = 33
|
||||
bones/34/rest = Transform3D(0.994398, 0.103703, -0.0204664, -0.104026, 0.994455, -0.0154059, 0.0187553, 0.0174486, 0.999672, 8.26549e-09, 0.235667, 5.16011e-08)
|
||||
bones/34/enabled = true
|
||||
bones/34/position = Vector3(8.26549e-09, 0.235667, 5.16011e-08)
|
||||
bones/34/rotation = Quaternion(0.00822544, -0.00981952, -0.0520068, 0.998565)
|
||||
bones/34/scale = Vector3(1, 1, 1)
|
||||
bones/35/name = "Index1.R"
|
||||
bones/35/parent = 34
|
||||
bones/35/rest = Transform3D(0.976715, -0.186496, 0.106055, 0.173979, 0.977761, 0.117108, -0.125537, -0.0959302, 0.98744, -9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/35/enabled = true
|
||||
bones/35/position = Vector3(-9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/35/rotation = Quaternion(-0.0536506, 0.0583229, 0.0907802, 0.992713)
|
||||
bones/35/scale = Vector3(1, 1, 1)
|
||||
bones/36/name = "Index2.R"
|
||||
bones/36/parent = 35
|
||||
bones/36/rest = Transform3D(0.949609, 0.112217, -0.292661, -0.178164, 0.961453, -0.209438, 0.257878, 0.251026, 0.932998, 1.49012e-08, 0.121023, -1.88127e-07)
|
||||
bones/36/enabled = true
|
||||
bones/36/position = Vector3(1.49012e-08, 0.121023, -1.88127e-07)
|
||||
bones/36/rotation = Quaternion(-0.0162477, -0.144091, -0.094652, 0.984893)
|
||||
bones/36/scale = Vector3(1, 1, 1)
|
||||
bones/37/name = "Index3.R"
|
||||
bones/37/parent = 36
|
||||
bones/37/rest = Transform3D(0.999011, 0.0285874, 0.0340588, -0.0297886, 0.998933, 0.0352993, -0.0330133, -0.0362789, 0.998796, 1.11759e-08, 0.0317744, 5.58794e-09)
|
||||
bones/37/enabled = true
|
||||
bones/37/position = Vector3(1.11759e-08, 0.0317744, 5.58794e-09)
|
||||
bones/37/rotation = Quaternion(-0.0919627, 0.00305185, -0.0204528, 0.995548)
|
||||
bones/37/scale = Vector3(1, 1, 1)
|
||||
bones/38/name = "Index4.R"
|
||||
bones/38/parent = 37
|
||||
bones/38/rest = Transform3D(0.999923, 0.00497013, -0.0114012, -0.00508561, 0.999936, -0.0101225, 0.0113502, 0.0101797, 0.999884, -1.86265e-09, 0.0286486, 1.43424e-07)
|
||||
bones/38/enabled = true
|
||||
bones/38/position = Vector3(-1.86265e-09, 0.0286486, 1.43424e-07)
|
||||
bones/38/rotation = Quaternion(-0.0302401, -0.0127248, -0.00602093, 0.999444)
|
||||
bones/38/scale = Vector3(1, 1, 1)
|
||||
bones/39/name = "Middle1.R"
|
||||
bones/39/parent = 34
|
||||
bones/39/rest = Transform3D(0.999177, 0.0327224, 0.0239655, -0.0332704, 0.999185, 0.0228362, -0.0231987, -0.0236148, 0.999452, -9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/39/enabled = true
|
||||
bones/39/position = Vector3(-9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/39/rotation = Quaternion(-0.0116159, 0.0117943, -0.0165027, 0.999727)
|
||||
bones/39/scale = Vector3(1, 1, 1)
|
||||
bones/40/name = "Middle2.R"
|
||||
bones/40/parent = 39
|
||||
bones/40/rest = Transform3D(0.995206, 0.0168507, -0.0963414, -0.0258566, 0.995329, -0.0930094, 0.0943241, 0.0950545, 0.990993, 4.5402e-09, 0.119848, -5.96046e-08)
|
||||
bones/40/enabled = true
|
||||
bones/40/position = Vector3(4.5402e-09, 0.119848, -5.96046e-08)
|
||||
bones/40/rotation = Quaternion(-0.0656035, -0.0574026, -0.0753899, 0.993337)
|
||||
bones/40/scale = Vector3(1, 1, 1)
|
||||
bones/41/name = "Middle3.R"
|
||||
bones/41/parent = 40
|
||||
bones/41/rest = Transform3D(0.999414, -0.00832194, 0.0332158, 0.00722566, 0.99943, 0.0329894, -0.0334714, -0.0327301, 0.998903, 7.45058e-09, 0.039186, 1.79745e-07)
|
||||
bones/41/enabled = true
|
||||
bones/41/position = Vector3(7.45058e-09, 0.039186, 1.79745e-07)
|
||||
bones/41/rotation = Quaternion(-0.120008, 0.00437156, 0.0210206, 0.992541)
|
||||
bones/41/scale = Vector3(1, 1, 1)
|
||||
bones/42/name = "Middle4.R"
|
||||
bones/42/parent = 41
|
||||
bones/42/rest = Transform3D(0.998183, -0.00420155, -0.0601002, 0.000566565, 0.998176, -0.0603717, 0.0602442, 0.060228, 0.996365, 6.40284e-09, 0.0391646, 2.10945e-07)
|
||||
bones/42/enabled = true
|
||||
bones/42/position = Vector3(6.40284e-09, 0.0391646, 2.10945e-07)
|
||||
bones/42/rotation = Quaternion(-0.0190482, -0.0352493, 0.00743692, 0.999169)
|
||||
bones/42/scale = Vector3(1, 1, 1)
|
||||
bones/43/name = "Ring1.R"
|
||||
bones/43/parent = 34
|
||||
bones/43/rest = Transform3D(0.965385, 0.252544, 0.065213, -0.256072, 0.965208, 0.0529203, -0.0495794, -0.0677877, 0.996467, -9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/43/enabled = true
|
||||
bones/43/position = Vector3(-9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/43/rotation = Quaternion(-0.030456, 0.0289634, -0.128329, 0.990841)
|
||||
bones/43/scale = Vector3(1, 1, 1)
|
||||
bones/44/name = "Ring2.R"
|
||||
bones/44/parent = 43
|
||||
bones/44/rest = Transform3D(0.991915, -0.0585674, -0.112584, 0.0419745, 0.988618, -0.144475, 0.119764, 0.138581, 0.983083, -1.11759e-08, 0.119257, -3.0268e-09)
|
||||
bones/44/enabled = true
|
||||
bones/44/position = Vector3(-1.11759e-08, 0.119257, -3.0268e-09)
|
||||
bones/44/rotation = Quaternion(-0.0439309, -0.106429, 0.0408442, 0.992509)
|
||||
bones/44/scale = Vector3(1, 1, 1)
|
||||
bones/45/name = "Ring3.R"
|
||||
bones/45/parent = 44
|
||||
bones/45/rest = Transform3D(0.999467, -0.0270218, -0.0183202, 0.0265623, 0.999338, -0.0248756, 0.0189802, 0.0243757, 0.999523, 7.45058e-09, 0.0329241, 8.3819e-08)
|
||||
bones/45/enabled = true
|
||||
bones/45/position = Vector3(7.45058e-09, 0.0329241, 8.3819e-08)
|
||||
bones/45/rotation = Quaternion(-0.119294, -0.0572576, 0.0398883, 0.990404)
|
||||
bones/45/scale = Vector3(1, 1, 1)
|
||||
bones/46/name = "Ring4.R"
|
||||
bones/46/parent = 45
|
||||
bones/46/rest = Transform3D(0.999835, 0.018016, -0.00214171, -0.0180165, 0.999838, -0.000196494, 0.00213782, 0.000235048, 0.999998, -1.86265e-08, 0.0321856, -1.45752e-07)
|
||||
bones/46/enabled = true
|
||||
bones/46/position = Vector3(-1.86265e-08, 0.0321856, -1.45752e-07)
|
||||
bones/46/rotation = Quaternion(-0.0748089, -0.0279542, 0.00762859, 0.996777)
|
||||
bones/46/scale = Vector3(1, 1, 1)
|
||||
bones/47/name = "Pinky1.R"
|
||||
bones/47/parent = 34
|
||||
bones/47/rest = Transform3D(0.895374, 0.440192, 0.0673485, -0.443593, 0.894937, 0.0480795, -0.0391085, -0.0729245, 0.99657, -9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/47/enabled = true
|
||||
bones/47/position = Vector3(-9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/47/rotation = Quaternion(-0.0310906, 0.0273529, -0.227078, 0.972996)
|
||||
bones/47/scale = Vector3(1, 1, 1)
|
||||
bones/48/name = "Pinky2.R"
|
||||
bones/48/parent = 47
|
||||
bones/48/rest = Transform3D(0.986314, -0.137336, -0.0912315, 0.122196, 0.980371, -0.154728, 0.11069, 0.141463, 0.983736, 7.45058e-09, 0.115961, 1.91852e-07)
|
||||
bones/48/enabled = true
|
||||
bones/48/position = Vector3(7.45058e-09, 0.115961, 1.91852e-07)
|
||||
bones/48/rotation = Quaternion(-0.0766032, -0.0608134, 0.182085, 0.978406)
|
||||
bones/48/scale = Vector3(1, 1, 1)
|
||||
bones/49/name = "Pinky3.R"
|
||||
bones/49/parent = 48
|
||||
bones/49/rest = Transform3D(0.999488, 0.0284066, -0.0147017, -0.0286406, 0.999462, -0.0159539, 0.0142406, 0.0163668, 0.999765, 3.35276e-08, 0.0257697, 5.44824e-08)
|
||||
bones/49/enabled = true
|
||||
bones/49/position = Vector3(3.35276e-08, 0.0257697, 5.44824e-08)
|
||||
bones/49/rotation = Quaternion(-0.0894857, 0.0379283, 0.022308, 0.995016)
|
||||
bones/49/scale = Vector3(1, 1, 1)
|
||||
bones/50/name = "Pinky4.R"
|
||||
bones/50/parent = 49
|
||||
bones/50/rest = Transform3D(0.999819, -0.000845239, -0.0189891, 0.000349583, 0.99966, -0.0260903, 0.0190047, 0.026079, 0.999479, -1.67638e-08, 0.0267585, -7.93952e-08)
|
||||
bones/50/enabled = true
|
||||
bones/50/position = Vector3(-1.67638e-08, 0.0267585, -7.93952e-08)
|
||||
bones/50/rotation = Quaternion(-0.116958, 0.00965458, 0.00323036, 0.993085)
|
||||
bones/50/scale = Vector3(1, 1, 1)
|
||||
bones/51/name = "Thumb1.R"
|
||||
bones/51/parent = 34
|
||||
bones/51/rest = Transform3D(0.601096, -0.671552, 0.433245, 0.161851, 0.633174, 0.756898, -0.782616, -0.384847, 0.48929, -9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/51/enabled = true
|
||||
bones/51/position = Vector3(-9.31323e-09, 0.0271997, 4.49363e-08)
|
||||
bones/51/rotation = Quaternion(-0.254289, 0.351549, 0.248254, 0.866095)
|
||||
bones/51/scale = Vector3(1, 1, 1)
|
||||
bones/52/name = "Thumb2.R"
|
||||
bones/52/parent = 51
|
||||
bones/52/rest = Transform3D(0.848897, -0.0930235, -0.520307, -0.0518132, 0.965005, -0.257064, 0.526012, 0.245179, 0.81437, 9.68575e-08, 0.0828836, -5.21541e-08)
|
||||
bones/52/enabled = true
|
||||
bones/52/position = Vector3(9.68575e-08, 0.0828836, -5.21541e-08)
|
||||
bones/52/rotation = Quaternion(0.131836, -0.274653, 0.0108175, 0.952401)
|
||||
bones/52/scale = Vector3(1, 1, 1)
|
||||
bones/53/name = "Thumb3.R"
|
||||
bones/53/parent = 52
|
||||
bones/53/rest = Transform3D(0.983871, 0.104484, -0.145192, -0.117794, 0.989281, -0.0862965, 0.13462, 0.102007, 0.985633, -2.98023e-08, 0.0311211, -2.23517e-08)
|
||||
bones/53/enabled = true
|
||||
bones/53/position = Vector3(-2.98023e-08, 0.0311211, -2.23517e-08)
|
||||
bones/53/rotation = Quaternion(-0.0596973, -0.0318686, -0.117547, 0.990759)
|
||||
bones/53/scale = Vector3(1, 1, 1)
|
||||
bones/54/name = "UpperLeg.L"
|
||||
bones/54/parent = 1
|
||||
bones/54/rest = Transform3D(1, 0, 0, 0, -0.996133, -0.0878607, 0, 0.0878604, -0.996136, 0.0964058, 0.0633354, -0.02323)
|
||||
bones/54/enabled = true
|
||||
bones/54/position = Vector3(0.0964058, 0.0633354, -0.02323)
|
||||
bones/54/rotation = Quaternion(0.995635, 0.00172645, -0.0318396, 0.0877113)
|
||||
bones/54/scale = Vector3(1, 1, 1)
|
||||
bones/55/name = "LowerLeg.L"
|
||||
bones/55/parent = 54
|
||||
bones/55/rest = Transform3D(1, 0, 0, 0, 0.990861, -0.134886, 0, 0.134886, 0.990861, 0, 0.481815, 1.49012e-08)
|
||||
bones/55/enabled = true
|
||||
bones/55/position = Vector3(0, 0.481815, 1.49012e-08)
|
||||
bones/55/rotation = Quaternion(0.140144, 7.47203e-09, 2.43013e-10, 0.990131)
|
||||
bones/55/scale = Vector3(1, 1, 1)
|
||||
bones/56/name = "UpperLeg.R"
|
||||
bones/56/parent = 1
|
||||
bones/56/rest = Transform3D(1, 0, 0, 0, -0.996133, -0.0878607, 0, 0.0878604, -0.996136, -0.0973122, 0.0633354, -0.02323)
|
||||
bones/56/enabled = true
|
||||
bones/56/position = Vector3(-0.0973122, 0.0633354, -0.02323)
|
||||
bones/56/rotation = Quaternion(0.995576, -0.00219287, 0.0331604, 0.0878887)
|
||||
bones/56/scale = Vector3(1, 1, 1)
|
||||
bones/57/name = "LowerLeg.R"
|
||||
bones/57/parent = 56
|
||||
bones/57/rest = Transform3D(1, 0, 0, 0, 0.990861, -0.134886, 0, 0.134886, 0.990861, 0, 0.481815, 1.49012e-08)
|
||||
bones/57/enabled = true
|
||||
bones/57/position = Vector3(0, 0.481815, 1.49012e-08)
|
||||
bones/57/rotation = Quaternion(0.14051, 1.0966e-09, 2.05919e-10, 0.990079)
|
||||
bones/57/scale = Vector3(1, 1, 1)
|
||||
bones/58/name = "Foot.L"
|
||||
bones/58/parent = 0
|
||||
bones/58/rest = Transform3D(1, 0, 0, 0, 0.00534737, -0.999986, 0, 0.999986, 0.00534737, 0.096859, 0.0227517, -0.0101932)
|
||||
bones/58/enabled = true
|
||||
bones/58/position = Vector3(0.096859, 0.0227517, -0.0101932)
|
||||
bones/58/rotation = Quaternion(0.705214, 0, 0, 0.708995)
|
||||
bones/58/scale = Vector3(1, 1, 1)
|
||||
bones/59/name = "PT.L"
|
||||
bones/59/parent = 0
|
||||
bones/59/rest = Transform3D(1, 0, 0, 0, 0.999986, 0.00534752, 0, -0.00534752, 0.999986, 0.096859, 0.490591, 0.685443)
|
||||
bones/59/enabled = true
|
||||
bones/59/position = Vector3(0.142741, 0.476902, 0.696958)
|
||||
bones/59/rotation = Quaternion(-0.00267377, 0, 0, 0.999996)
|
||||
bones/59/scale = Vector3(1, 1, 1)
|
||||
bones/60/name = "Foot.R"
|
||||
bones/60/parent = 0
|
||||
bones/60/rest = Transform3D(1, 0, 0, 0, 0.00534737, -0.999986, 0, 0.999986, 0.00534737, -0.096859, 0.0227517, -0.0101932)
|
||||
bones/60/enabled = true
|
||||
bones/60/position = Vector3(-0.096859, 0.0227517, -0.0101932)
|
||||
bones/60/rotation = Quaternion(0.705214, 0, 0, 0.708995)
|
||||
bones/60/scale = Vector3(1, 1, 1)
|
||||
bones/61/name = "PT.R"
|
||||
bones/61/parent = 0
|
||||
bones/61/rest = Transform3D(1, 0, 0, 0, 0.999986, 0.00534752, 0, -0.00534752, 0.999986, -0.096859, 0.490591, 0.685443)
|
||||
bones/61/enabled = true
|
||||
bones/61/position = Vector3(-0.142612, 0.507017, 0.672455)
|
||||
bones/61/rotation = Quaternion(-0.00267377, 0, 0, 0.999996)
|
||||
bones/61/scale = Vector3(1, 1, 1)
|
||||
|
||||
[node name="SciFi_Head" type="MeshInstance3D" parent="CharacterArmature/Skeleton3D"]
|
||||
mesh = ExtResource("3_ajlxp")
|
||||
skin = SubResource("Skin_ko28d")
|
||||
|
||||
[node name="Suit_Body" type="MeshInstance3D" parent="CharacterArmature/Skeleton3D"]
|
||||
mesh = ExtResource("4_7a734")
|
||||
skin = SubResource("Skin_ko28d")
|
||||
|
||||
[node name="Suit_Feet" type="MeshInstance3D" parent="CharacterArmature/Skeleton3D"]
|
||||
mesh = ExtResource("5_6syjw")
|
||||
skin = SubResource("Skin_ko28d")
|
||||
|
||||
[node name="Suit_Legs" type="MeshInstance3D" parent="CharacterArmature/Skeleton3D"]
|
||||
mesh = ExtResource("6_7eie4")
|
||||
skin = SubResource("Skin_ko28d")
|
||||
|
||||
[node name="ItemHold_BoneAttach" type="BoneAttachment3D" parent="CharacterArmature/Skeleton3D"]
|
||||
transform = Transform3D(-0.0135656, -0.102041, -0.994688, -0.045245, -0.993698, 0.102557, -0.998884, 0.0463959, 0.00886312, -0.238703, 0.991208, 0.0599381)
|
||||
bone_name = "Middle1.R"
|
||||
bone_idx = 39
|
||||
script = ExtResource("7_sn2x3")
|
||||
|
||||
[node name="ItemHoldPoint" type="Marker3D" parent="CharacterArmature/Skeleton3D/ItemHold_BoneAttach"]
|
||||
transform = Transform3D(1, 3.72529e-09, 1.86265e-09, -1.11759e-08, 1, 2.15659e-08, -1.86265e-09, -2.99769e-09, 1, 0.003, 0.12, -0.032)
|
||||
|
||||
[node name="mug" type="MeshInstance3D" parent="CharacterArmature/Skeleton3D/ItemHold_BoneAttach/ItemHoldPoint"]
|
||||
transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, -0.01, 0, -0.08)
|
||||
visible = false
|
||||
mesh = ExtResource("8_y10x8")
|
||||
|
||||
[node name="PlayerVisibilityShape" type="StaticBody3D" parent="CharacterArmature"]
|
||||
collision_layer = 2
|
||||
collision_mask = 2
|
||||
|
||||
[node name="Standing" type="CollisionShape3D" parent="CharacterArmature/PlayerVisibilityShape"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.8, 0.1)
|
||||
shape = SubResource("CapsuleShape3D_q8qsp")
|
||||
debug_fill = false
|
||||
|
||||
[node name="Crouching" type="CollisionShape3D" parent="CharacterArmature/PlayerVisibilityShape"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0.2)
|
||||
shape = SubResource("CapsuleShape3D_62lcb")
|
||||
disabled = true
|
||||
debug_fill = false
|
||||
|
||||
[node name="GrabArea_Upper" type="Area3D" parent="CharacterArmature"]
|
||||
collision_layer = 0
|
||||
collision_mask = 8
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="CharacterArmature/GrabArea_Upper"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2, 0)
|
||||
shape = SubResource("CylinderShape3D_y10x8")
|
||||
debug_color = Color(0.899311, 0.000178854, 0.76619, 0.42)
|
||||
|
||||
[node name="GrabArea_Lower" type="Area3D" parent="CharacterArmature"]
|
||||
collision_layer = 0
|
||||
collision_mask = 8
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="CharacterArmature/GrabArea_Lower"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.35, 0)
|
||||
shape = SubResource("CylinderShape3D_1sc42")
|
||||
debug_color = Color(0.899311, 0.000178854, 0.76619, 0.42)
|
||||
|
||||
[node name="AnimationPlayer_new" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_11wwj")
|
||||
}
|
||||
autoplay = "Idle_Neutral"
|
||||
playback_default_blend_time = 0.6
|
||||
|
||||
[node name="note" parent="." instance=ExtResource("37_1sc42")]
|
||||
visible = false
|
||||
|
||||
[node name="hud" parent="." instance=ExtResource("38_0t50q")]
|
||||
|
||||
[node name="LockTimer" type="Timer" parent="."]
|
||||
process_callback = 0
|
||||
one_shot = true
|
||||
|
||||
[connection signal="timeout" from="LockTimer" to="." method="unlock"]
|
||||
3
entities/player_visibility_shape.gd
Normal file
3
entities/player_visibility_shape.gd
Normal file
@@ -0,0 +1,3 @@
|
||||
extends StaticBody3D
|
||||
|
||||
var parent : Node
|
||||
1
entities/player_visibility_shape.gd.uid
Normal file
1
entities/player_visibility_shape.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cbjga11vpedlf
|
||||
Reference in New Issue
Block a user