break-utopia/project/objects/player_body.tscn
2026-01-21 17:06:18 +01:00

315 lines
15 KiB
Text

[gd_scene format=3 uid="uid://csr23278g4hqe"]
[ext_resource type="Material" uid="uid://dm6208hbqf4du" path="res://assets/models/character/materials/face.tres" id="1_dj8sy"]
[ext_resource type="PackedScene" uid="uid://cj3x6a8gm4ogn" path="res://assets/models/character/character.blend" id="1_yaurm"]
[ext_resource type="Texture2D" uid="uid://pvyws3o3st6e" path="res://assets/models/character/character_player_face_bored.png" id="2_vapos"]
[ext_resource type="Texture2D" uid="uid://cc57nq4welkle" path="res://assets/models/character/character_player_face_angry_base.png" id="3_0qik6"]
[ext_resource type="Texture2D" uid="uid://bbwg6vca2x3sp" path="res://assets/models/character/character_player_face_angry_action.png" id="4_l45uo"]
[ext_resource type="Material" uid="uid://b34bw5uytvs5x" path="res://assets/effects/glow_material.tres" id="6_vapos"]
[ext_resource type="Material" uid="uid://dnar2tn2dgjb5" path="res://assets/effects/green_glow_material.tres" id="7_0qik6"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_5j0w6"]
radius = 0.39990234
[sub_resource type="GDScript" id="GDScript_yaurm"]
script/source = "extends Node3D
enum Expressions {
FACE_BORED, FACE_ANGRY, FACE_ACTION
}
@export var face_material : StandardMaterial3D
@export var face_textures : Array[Texture2D]
@export var hammer_glow_material : StandardMaterial3D
func emit(scene : PackedScene):
if is_instance_valid(scene):
var instance : Node = scene.instantiate()
add_child(instance)
if instance is Node3D:
var node3d : Node3D = instance as Node3D
node3d.global_position = global_position
node3d.global_rotation = global_rotation
else:
push_warning(\"Attempt to emit nil effect\")
func set_player_face(face : Expressions):
if is_instance_valid(face_material):
face_material.albedo_texture = face_textures[face]
func set_hammer_glow(glow : bool):
$\"../character/character2/Skeleton3D/hammer\".material_overlay = hammer_glow_material if glow else null
"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_l45uo"]
animation = &"falling"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_njhnd"]
animation = &"hurt"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_yaurm"]
animation = &"RESET"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_l4dj5"]
animation = &"jump_strike"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_0qik6"]
animation = &"leap"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_dj8sy"]
animation = &"ready_idle"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_vapos"]
animation = &"run"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_abvwl"]
animation = &"special_spin_forward"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_7anxi"]
animation = &"wide_swing_left"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_1p07c"]
animation = &"wide_swing_right"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_yaurm"]
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_dj8sy"]
xfade_time = 0.01
switch_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_0qik6"]
xfade_time = 0.3
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_1p07c"]
xfade_time = 0.05
priority = 2
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_l4dj5"]
xfade_time = 0.1
priority = 2
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_l45uo"]
xfade_time = 0.02
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_7anxi"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_abvwl"]
xfade_time = 0.1
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_njhnd"]
xfade_time = 0.1
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_0jr6v"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_5bea6"]
xfade_time = 0.1
switch_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_c0vxo"]
switch_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_akn3p"]
xfade_time = 0.05
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vapos"]
xfade_time = 0.01
switch_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_txygb"]
xfade_time = 0.1
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_yabrd"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_qyr5q"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_krlq6"]
switch_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_d25mo"]
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_g2wep"]
switch_mode = 2
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_yaurm"]
states/End/position = Vector2(819.20306, 217.87698)
states/Start/position = Vector2(339.22916, 10.581505)
states/falling/node = SubResource("AnimationNodeAnimation_l45uo")
states/falling/position = Vector2(159.81012, 193.92871)
states/hurt/node = SubResource("AnimationNodeAnimation_njhnd")
states/hurt/position = Vector2(335.9173, 194.37602)
states/idle/node = SubResource("AnimationNodeAnimation_yaurm")
states/idle/position = Vector2(339.472, 99.8394)
states/jump_strike/node = SubResource("AnimationNodeAnimation_l4dj5")
states/jump_strike/position = Vector2(1064.1254, -68.24788)
states/leap/node = SubResource("AnimationNodeAnimation_0qik6")
states/leap/position = Vector2(758.9374, -64.90059)
states/ready_idle/node = SubResource("AnimationNodeAnimation_dj8sy")
states/ready_idle/position = Vector2(482.89404, 94.36595)
states/run/node = SubResource("AnimationNodeAnimation_vapos")
states/run/position = Vector2(159.82951, 100.4825)
states/special_spin_forward/node = SubResource("AnimationNodeAnimation_abvwl")
states/special_spin_forward/position = Vector2(756.3414, -274.36328)
states/wide_swing_left/node = SubResource("AnimationNodeAnimation_7anxi")
states/wide_swing_left/position = Vector2(759.0044, -153.31633)
states/wide_swing_right/node = SubResource("AnimationNodeAnimation_1p07c")
states/wide_swing_right/position = Vector2(482.58664, -153.6186)
transitions = ["Start", "idle", SubResource("AnimationNodeStateMachineTransition_yaurm"), "wide_swing_right", "wide_swing_left", SubResource("AnimationNodeStateMachineTransition_dj8sy"), "jump_strike", "ready_idle", SubResource("AnimationNodeStateMachineTransition_0qik6"), "wide_swing_left", "ready_idle", SubResource("AnimationNodeStateMachineTransition_1p07c"), "wide_swing_right", "ready_idle", SubResource("AnimationNodeStateMachineTransition_l4dj5"), "ready_idle", "wide_swing_right", SubResource("AnimationNodeStateMachineTransition_l45uo"), "idle", "ready_idle", SubResource("AnimationNodeStateMachineTransition_7anxi"), "idle", "run", SubResource("AnimationNodeStateMachineTransition_abvwl"), "run", "idle", SubResource("AnimationNodeStateMachineTransition_njhnd"), "ready_idle", "idle", SubResource("AnimationNodeStateMachineTransition_0jr6v"), "wide_swing_right", "leap", SubResource("AnimationNodeStateMachineTransition_5bea6"), "leap", "jump_strike", SubResource("AnimationNodeStateMachineTransition_c0vxo"), "leap", "ready_idle", SubResource("AnimationNodeStateMachineTransition_akn3p"), "wide_swing_left", "wide_swing_right", SubResource("AnimationNodeStateMachineTransition_vapos"), "run", "falling", SubResource("AnimationNodeStateMachineTransition_txygb"), "falling", "idle", SubResource("AnimationNodeStateMachineTransition_yabrd"), "idle", "falling", SubResource("AnimationNodeStateMachineTransition_qyr5q"), "wide_swing_left", "special_spin_forward", SubResource("AnimationNodeStateMachineTransition_krlq6"), "special_spin_forward", "ready_idle", SubResource("AnimationNodeStateMachineTransition_d25mo"), "hurt", "idle", SubResource("AnimationNodeStateMachineTransition_g2wep")]
graph_offset = Vector2(79.56456, -397.2635)
[sub_resource type="BoxShape3D" id="BoxShape3D_1p07c"]
size = Vector3(0.56225586, 1.7996826, 0.31640625)
[sub_resource type="SphereShape3D" id="SphereShape3D_1p07c"]
radius = 0.35
[sub_resource type="GDScript" id="GDScript_1p07c"]
script/source = "extends SpringArm3D
var camera : Vector2 = Vector2()
func _ready():
rotate_y(get_parent().global_rotation.y)
func _unhandled_input(event : InputEvent) -> void:
if not $PlayerCamera.current:
return
if event.is_action(\"look_left\") or event.is_action(\"look_right\"):
camera.x = Input.get_axis(\"look_right\", \"look_left\")
elif event.is_action(\"look_up\") or event.is_action(\"look_down\"):
camera.y = Input.get_axis(\"look_down\", \"look_up\")
elif event is InputEventMouseMotion:
rotate_camera((event as InputEventMouseMotion).screen_relative * Vector2(-0.0015, -0.0013))
func _physics_process(_delta : float):
self.global_position = $\"..\".global_position + Vector3(0, 2, 0)
func _process(delta : float):
rotate_camera(Vector2(camera.x * 3., camera.y * 1.) * delta)
self.global_position = $\"..\".global_position + Vector3(0, 2, 0)
func rotate_camera(delta : Vector2):
rotate_y(delta.x)
if abs(rotation.x + delta.y) < PI/3:
rotate_object_local(Vector3(1, 0, 0), delta.y)
"
[node name="PlayerBody" type="PlayerBody" unique_id=62983514]
collision_layer = 8
collision_mask = 9
floor_snap_length = 0.3
platform_on_leave = 2
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=838697170]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.949463, 0)
shape = SubResource("CapsuleShape3D_5j0w6")
debug_color = Color(0.6222333, 0.35313448, 1, 0.41960785)
[node name="EffectsEmitter" type="Node3D" parent="." unique_id=729317530]
script = SubResource("GDScript_yaurm")
face_material = ExtResource("1_dj8sy")
face_textures = Array[Texture2D]([ExtResource("2_vapos"), ExtResource("3_0qik6"), ExtResource("4_l45uo")])
hammer_glow_material = ExtResource("6_vapos")
[node name="AnimationTree" type="AnimationTree" parent="." unique_id=1454038462]
unique_name_in_owner = true
root_node = NodePath("%AnimationTree/../character")
root_motion_track = NodePath("character2/Skeleton3D:root")
tree_root = SubResource("AnimationNodeStateMachine_yaurm")
anim_player = NodePath("../character/AnimationPlayer")
[node name="character" parent="." unique_id=1905563681 instance=ExtResource("1_yaurm")]
[node name="BoneAttachment3D" type="BoneAttachment3D" parent="character/character2/Skeleton3D" parent_id_path=PackedInt32Array(1905563681, 331876289) index="2" unique_id=566409344]
transform = Transform3D(-0.74619925, -0.6650274, 0.030413395, 0.6645052, -0.7468186, -0.026356531, 0.040241107, 0.0005426332, 0.99918985, 0.6361852, 2.0346472, -0.14206453)
bone_name = "hammer_2"
bone_idx = 18
[node name="DamageBox" type="DamageBox" parent="character/character2/Skeleton3D/BoneAttachment3D" unique_id=22655743]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.008875, 1.58642, -6.97582e-10)
collision_layer = 0
collision_mask = 2
input_ray_pickable = false
monitoring = false
monitorable = false
priority = 1
[node name="CollisionShape3D" type="CollisionShape3D" parent="character/character2/Skeleton3D/BoneAttachment3D/DamageBox" unique_id=1811455573]
transform = Transform3D(1, -1.5126517e-06, -2.0972918e-06, 1.5126523e-06, 1, 2.4580334e-07, 2.0972914e-06, -2.4580652e-07, 1, -0.0016264915, -0.35644522, -0.027019724)
shape = SubResource("BoxShape3D_1p07c")
debug_color = Color(0.9976354, 0, 0.17166689, 0.41960785)
[node name="SpringArm3D" type="SpringArm3D" parent="." unique_id=304394102]
process_mode = 3
transform = Transform3D(-1, 2.48671e-09, -8.738735e-08, 0, 0.9995958, 0.028445452, 8.74228e-08, 0.028445452, -0.9995958, 0, 2, 0)
top_level = true
shape = SubResource("SphereShape3D_1p07c")
spring_length = 3.5
script = SubResource("GDScript_1p07c")
[node name="PlayerCamera" type="PlayerCamera" parent="SpringArm3D" unique_id=16637717]
transform = Transform3D(1, 0, 0, 0, 0.98547, 0.16984826, 0, -0.16984826, 0.98547, 0, 0, 0)
[node name="PlayerIdleState" type="PlayerIdleState" parent="." unique_id=151375109]
process_mode = 3
[node name="PlayerRunState" type="PlayerRunState" parent="." unique_id=1199697280]
process_mode = 3
[node name="PlayerFallState" type="PlayerFallState" parent="." unique_id=1253476548]
[node name="SwingWideRight" type="PlayerBasicAttackState" parent="." unique_id=434134429 node_paths=PackedStringArray("hammer_model")]
process_mode = 3
animation_name = "wide_swing_right"
next_fast = NodePath("../SwingWideLeft")
next_slow = NodePath("../LeapStrike")
next_special_slow = NodePath("../SpinSpecial")
trigger_slow_margin = 0.2
trigger_fast_margin = 0.3
hammer_model = NodePath("../character/character2/Skeleton3D/hammer")
hammer_attack_outline = ExtResource("7_0qik6")
[node name="SwingWideLeft" type="PlayerBasicAttackState" parent="." unique_id=258424615 node_paths=PackedStringArray("hammer_model")]
process_mode = 3
animation_name = "wide_swing_left"
next_fast = NodePath("../SwingWideRight")
next_slow = NodePath("../SwingWideRight")
trigger_slow_margin = 0.15
trigger_fast_margin = 0.15
hammer_model = NodePath("../character/character2/Skeleton3D/hammer")
hammer_attack_outline = ExtResource("7_0qik6")
[node name="LeapStrike" type="PlayerBasicAttackState" parent="." unique_id=645711690 node_paths=PackedStringArray("hammer_model")]
animation_name = "leap"
next_special_slow = NodePath("../JumpStrike")
input_slow_margin = 0.5
trigger_fast_margin = 0.0
hammer_model = NodePath("../character/character2/Skeleton3D/hammer")
hammer_attack_outline = ExtResource("7_0qik6")
[node name="JumpStrike" type="PlayerSpecialAttackState" parent="." unique_id=946298191 node_paths=PackedStringArray("hammer_model")]
process_mode = 3
animation_name = "jump_strike"
hammer_model = NodePath("../character/character2/Skeleton3D/hammer")
hammer_attack_outline = ExtResource("6_vapos")
meter_cost = 0.5
[node name="SpinSpecial" type="PlayerSpecialAttackState" parent="." unique_id=321391911 node_paths=PackedStringArray("hammer_model")]
animation_name = "special_spin_forward"
hammer_model = NodePath("../character/character2/Skeleton3D/hammer")
hammer_attack_outline = ExtResource("6_vapos")
meter_cost = 1.0
[node name="PlayerHurtState" type="PlayerHurtState" parent="." unique_id=1727354929]
[editable path="character"]