Compare commits
53 Commits
3eb9fa50f3
..
0.3.0
| Author | SHA1 | Date | |
|---|---|---|---|
| 34dc5b026e | |||
| 5c1e881a53 | |||
| 4efc6763f0 | |||
| 76d4fee33c | |||
| 271be0b26b | |||
| 98c6f1285a | |||
| 4d66df8c7e | |||
| 41f18cb5d6 | |||
| 6b6a926715 | |||
| dae7ec06da | |||
| 1eb06876e9 | |||
| 1021a07b04 | |||
| c365f76d80 | |||
| 32ac46f840 | |||
| bd10d1789b | |||
| 170d8ff3f1 | |||
| 550bf2c5ad | |||
| 02f3e283de | |||
| 9123574947 | |||
| aadf59d2d0 | |||
| d57c3dc2a2 | |||
| 09ae6bfbf4 | |||
| 40c1b8e680 | |||
| a1c77fed5e | |||
| 1a8af92d88 | |||
| 8166a6c18e | |||
| 46d6dda325 | |||
| fc9348551d | |||
| c4a19c7443 | |||
| 95c4c0ddf9 | |||
| 6a4f104655 | |||
| d4b67888d7 | |||
| b177e0aee3 | |||
| 2a6f4c0f7b | |||
| 32d0c58f5c | |||
| 251002ea7c | |||
| 986496097f | |||
| d976deeb6a | |||
| d632670092 | |||
| e1899e49f4 | |||
| 6f5f9e6bba | |||
| 91cd027a98 | |||
| ef2fb24969 | |||
| 4c75776c70 | |||
| 7688084b7e | |||
| ccc92f201f | |||
| 008650a87e | |||
| b9e3147519 | |||
| cdba320cbc | |||
| ee7b1617c1 | |||
| d749485126 | |||
| 45427b7070 | |||
| d514435dd8 |
@@ -2,4 +2,4 @@ disable:
|
||||
- class-definitions-order
|
||||
- no-else-return
|
||||
max-line-length: 120
|
||||
max-file-lines: 1200
|
||||
max-file-lines: 3000
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
[gd_resource type="Animation" format=3 uid="uid://bq71flatfddll"]
|
||||
|
||||
[resource]
|
||||
resource_name = "Bear_fx_smash_hit"
|
||||
length = 0.23333333
|
||||
tracks/0/type = "position_3d"
|
||||
tracks/0/imported = true
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Bear_fx_smash_hit")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = PackedFloat32Array(0, 1, 0, -0.51246816, 7.1560388, 0.033333335, 1, 0, -0.51246816, 7.1560388, 0.06666667, 1, 1.2735307, -1.4730668, 5.139501, 0.1, 1, 1.3610363, 0.27301335, 5.141279, 0.13333334, 1, 1.3735371, 2.1639488, 5.153728, 0.16666667, 1, 1.3573295, -0.04170864, 5.1945124, 0.2, 1, 1.3061407, -0.3338372, 5.1877995, 0.23333333, 1, 1.2735307, -0.37556988, 5.1810856)
|
||||
tracks/1/type = "rotation_3d"
|
||||
tracks/1/imported = true
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Bear_fx_smash_hit")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1, 0.033333335, 1, 0, 0, 0, 1, 0.06666667, 1, 0.045591418, -0.036703378, -0.0016762356, 0.9982843, 0.1, 1, 0.06741002, -0.02538766, 0.014408795, 0.99729824, 0.13333334, 1, 0.05603578, -0.017236687, 0.029419938, 0.99784636, 0.16666667, 1, -0.071329094, -0.014488678, 0.036211126, 0.9966901, 0.23333333, 1, -0.039237745, -0.015645763, 0.035726424, 0.99846846)
|
||||
tracks/2/type = "scale_3d"
|
||||
tracks/2/imported = true
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Bear_fx_smash_hit")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = PackedFloat32Array(0, 1, 0, 0, 0, 0.033333335, 1, 0, 0, 0, 0.06666667, 1, 0.55657715, 0.55657715, 0.5565772, 0.23333333, 1, 0.55657715, 0.55657715, 0.55657715)
|
||||
tracks/3/type = "position_3d"
|
||||
tracks/3/imported = true
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Bear_fx_jump_smash")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = PackedFloat32Array(0, 1, 0, -0.51246816, 0)
|
||||
tracks/4/type = "scale_3d"
|
||||
tracks/4/imported = true
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("Bear_fx_jump_smash")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = PackedFloat32Array(0, 1, 0, 0, 0)
|
||||
tracks/5/type = "position_3d"
|
||||
tracks/5/imported = true
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("Bear_fx_claw_attack_R")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = PackedFloat32Array(0, 1, -3.188013, 1.0970955, 1.7545929)
|
||||
tracks/6/type = "rotation_3d"
|
||||
tracks/6/imported = true
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("Bear_fx_claw_attack_R")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
|
||||
tracks/7/type = "scale_3d"
|
||||
tracks/7/imported = true
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("Bear_fx_claw_attack_R")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = PackedFloat32Array(0, 1, 0, 0, 0)
|
||||
tracks/8/type = "position_3d"
|
||||
tracks/8/imported = true
|
||||
tracks/8/enabled = true
|
||||
tracks/8/path = NodePath("Bear_fx_claw_attack_L")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = PackedFloat32Array(0, 1, -3.188013, 1.0970955, 1.7545929)
|
||||
tracks/9/type = "rotation_3d"
|
||||
tracks/9/imported = true
|
||||
tracks/9/enabled = true
|
||||
tracks/9/path = NodePath("Bear_fx_claw_attack_L")
|
||||
tracks/9/interp = 1
|
||||
tracks/9/loop_wrap = true
|
||||
tracks/9/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
|
||||
tracks/10/type = "scale_3d"
|
||||
tracks/10/imported = true
|
||||
tracks/10/enabled = true
|
||||
tracks/10/path = NodePath("Bear_fx_claw_attack_L")
|
||||
tracks/10/interp = 1
|
||||
tracks/10/loop_wrap = true
|
||||
tracks/10/keys = PackedFloat32Array(0, 1, 0, 0, 0)
|
||||
tracks/11/type = "method"
|
||||
tracks/11/imported = false
|
||||
tracks/11/enabled = true
|
||||
tracks/11/path = NodePath("..")
|
||||
tracks/11/interp = 1
|
||||
tracks/11/loop_wrap = true
|
||||
tracks/11/keys = {
|
||||
"times": PackedFloat32Array(),
|
||||
"transitions": PackedFloat32Array(),
|
||||
"values": []
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -4,8 +4,9 @@ importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dk6xuwwa0mfpe"
|
||||
path.s3tc="res://.godot/imported/Arena_sand.png-416de2afe03241df088061e1a5f831af.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/Arena_sand.png-416de2afe03241df088061e1a5f831af.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
@@ -15,7 +16,7 @@ generator_parameters={
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Arena_sand.png"
|
||||
dest_files=["res://.godot/imported/Arena_sand.png-416de2afe03241df088061e1a5f831af.s3tc.ctex"]
|
||||
dest_files=["res://.godot/imported/Arena_sand.png-416de2afe03241df088061e1a5f831af.s3tc.ctex", "res://.godot/imported/Arena_sand.png-416de2afe03241df088061e1a5f831af.etc2.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -4,8 +4,9 @@ importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b4gkpa7jypcsm"
|
||||
path.s3tc="res://.godot/imported/Arena_wall.png-e67bd4bbd2f60583bfc14dd8b7687eef.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/Arena_wall.png-e67bd4bbd2f60583bfc14dd8b7687eef.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
@@ -15,7 +16,7 @@ generator_parameters={
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Arena_wall.png"
|
||||
dest_files=["res://.godot/imported/Arena_wall.png-e67bd4bbd2f60583bfc14dd8b7687eef.s3tc.ctex"]
|
||||
dest_files=["res://.godot/imported/Arena_wall.png-e67bd4bbd2f60583bfc14dd8b7687eef.s3tc.ctex", "res://.godot/imported/Arena_wall.png-e67bd4bbd2f60583bfc14dd8b7687eef.etc2.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -4,8 +4,9 @@ importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://yercpq3y2o0x"
|
||||
path.s3tc="res://.godot/imported/Arena_wood.png-b4ed20d66b4d375396b0be2f2f863d80.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/Arena_wood.png-b4ed20d66b4d375396b0be2f2f863d80.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
@@ -15,7 +16,7 @@ generator_parameters={
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Arena_wood.png"
|
||||
dest_files=["res://.godot/imported/Arena_wood.png-b4ed20d66b4d375396b0be2f2f863d80.s3tc.ctex"]
|
||||
dest_files=["res://.godot/imported/Arena_wood.png-b4ed20d66b4d375396b0be2f2f863d80.s3tc.ctex", "res://.godot/imported/Arena_wood.png-b4ed20d66b4d375396b0be2f2f863d80.etc2.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
Binary file not shown.
+6172
-1
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -3,13 +3,13 @@
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://dxe72ig8gfbcg"
|
||||
path="res://.godot/imported/arena model2026.glb-299db01cae891e5005f8ac1e6c83d0a6.scn"
|
||||
uid="uid://cwmo5vh738x6w"
|
||||
path="res://.godot/imported/Lobby_level.glb-a7e896ecf7377d9530a80d5e63140cc3.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/arena model2026.glb"
|
||||
dest_files=["res://.godot/imported/arena model2026.glb-299db01cae891e5005f8ac1e6c83d0a6.scn"]
|
||||
source_file="res://Assets/Lobby_level.glb"
|
||||
dest_files=["res://.godot/imported/Lobby_level.glb-a7e896ecf7377d9530a80d5e63140cc3.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 598 KiB |
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://xtv6u00w4nmy"
|
||||
path.s3tc="res://.godot/imported/Lobby_level_sand.png-bb70b0169c6b5159e020ce143afe9786.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/Lobby_level_sand.png-bb70b0169c6b5159e020ce143afe9786.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "c8b9b7d6205ce80dfcfaa38152b996fe"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Lobby_level_sand.png"
|
||||
dest_files=["res://.godot/imported/Lobby_level_sand.png-bb70b0169c6b5159e020ce143afe9786.s3tc.ctex", "res://.godot/imported/Lobby_level_sand.png-bb70b0169c6b5159e020ce143afe9786.etc2.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 412 KiB |
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://csy5f3l5lufp5"
|
||||
path.s3tc="res://.godot/imported/Lobby_level_wall.png-39243638bfc6ea5742b6e2fdc927ae2c.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/Lobby_level_wall.png-39243638bfc6ea5742b6e2fdc927ae2c.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "0e7ed34c3c812d96732bd32f9dca0c93"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Lobby_level_wall.png"
|
||||
dest_files=["res://.godot/imported/Lobby_level_wall.png-39243638bfc6ea5742b6e2fdc927ae2c.s3tc.ctex", "res://.godot/imported/Lobby_level_wall.png-39243638bfc6ea5742b6e2fdc927ae2c.etc2.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 180 KiB |
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ym5273astq46"
|
||||
path.s3tc="res://.godot/imported/Lobby_level_wood.png-4817792c09af3fd5e04ad29e0f9bd0ce.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/Lobby_level_wood.png-4817792c09af3fd5e04ad29e0f9bd0ce.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "23a7a951553ffe271c47693fd71314ca"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Lobby_level_wood.png"
|
||||
dest_files=["res://.godot/imported/Lobby_level_wood.png-4817792c09af3fd5e04ad29e0f9bd0ce.s3tc.ctex", "res://.godot/imported/Lobby_level_wood.png-4817792c09af3fd5e04ad29e0f9bd0ce.etc2.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
Binary file not shown.
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://dctmlh4hnuux1"
|
||||
path="res://.godot/imported/Lobby_underground.glb-55ed49331d7074ef560bfa0a498b89a7.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Lobby_underground.glb"
|
||||
dest_files=["res://.godot/imported/Lobby_underground.glb-55ed49331d7074ef560bfa0a498b89a7.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
mesh_library/use_node_names_as_mesh_names=false
|
||||
array_mesh/deduplicate_surfaces=true
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
meshes/force_disable_compression=false
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
gltf/texture_map_mode=1
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 166 KiB |
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dc4gf36fgsabp"
|
||||
path.s3tc="res://.godot/imported/Lobby_underground_rock.png-76733dc5212e6c79a91e71ce008ebf6f.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/Lobby_underground_rock.png-76733dc5212e6c79a91e71ce008ebf6f.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "de3796fe2c1123ae5ba27a0532fda6bd"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Lobby_underground_rock.png"
|
||||
dest_files=["res://.godot/imported/Lobby_underground_rock.png-76733dc5212e6c79a91e71ce008ebf6f.s3tc.ctex", "res://.godot/imported/Lobby_underground_rock.png-76733dc5212e6c79a91e71ce008ebf6f.etc2.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 47 KiB |
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://v0hdo12xule3"
|
||||
path.s3tc="res://.godot/imported/Lobby_underground_rock_B.jpg-c5e86461201f99688c8146fff239a62b.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/Lobby_underground_rock_B.jpg-c5e86461201f99688c8146fff239a62b.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "335b739e743244a64c47e2564a9a3652"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Lobby_underground_rock_B.jpg"
|
||||
dest_files=["res://.godot/imported/Lobby_underground_rock_B.jpg-c5e86461201f99688c8146fff239a62b.s3tc.ctex", "res://.godot/imported/Lobby_underground_rock_B.jpg-c5e86461201f99688c8146fff239a62b.etc2.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 183 KiB |
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dcy7fdio5k84j"
|
||||
path.s3tc="res://.godot/imported/Lobby_underground_rock_B.png-3133a2540f4e1417fb5588bad79e38c8.s3tc.ctex"
|
||||
path.etc2="res://.godot/imported/Lobby_underground_rock_B.png-3133a2540f4e1417fb5588bad79e38c8.etc2.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "16ea5e4b01e9b3952b950ff65535e5d5"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Lobby_underground_rock_B.png"
|
||||
dest_files=["res://.godot/imported/Lobby_underground_rock_B.png-3133a2540f4e1417fb5588bad79e38c8.s3tc.ctex", "res://.godot/imported/Lobby_underground_rock_B.png-3133a2540f4e1417fb5588bad79e38c8.etc2.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
Binary file not shown.
@@ -28,7 +28,7 @@ meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
meshes/force_disable_compression=false
|
||||
meshes/force_disable_compression=true
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,42 @@
|
||||
[gd_scene format=3 uid="uid://by4ifsgxlv0gj"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bm6rmt3xprhjs" path="res://Assets/bear_level_arena.glb" id="1_beararena"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_floor"]
|
||||
|
||||
[node name="bear_level" type="Node3D" unique_id=2020009824]
|
||||
|
||||
[node name="Node3D" type="Node3D" parent="." unique_id=1366355859]
|
||||
|
||||
[node name="StaticBody3D" type="StaticBody3D" parent="Node3D" unique_id=721553462]
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D/StaticBody3D" unique_id=474515358]
|
||||
transform = Transform3D(30, 0, 0, 0, 1, 0, 0, 0, 30, 0, -0.5, 0)
|
||||
shape = SubResource("BoxShape3D_floor")
|
||||
|
||||
[node name="bear_level_arena" parent="." unique_id=948414670 instance=ExtResource("1_beararena")]
|
||||
transform = Transform3D(2.875, 0, 0, 0, 2.875, 0, 0, 0, 2.875, 0, 0, 0)
|
||||
|
||||
[node name="MatadorSpawner" type="Node3D" parent="." unique_id=1869467620]
|
||||
|
||||
[node name="Lights" type="Node3D" parent="." unique_id=1435665429]
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Lights" unique_id=1814200565]
|
||||
transform = Transform3D(0.01535992, 0.56825536, -0.82270896, 0.16280846, 0.8104039, 0.56279576, 0.9865382, -0.14258848, -0.08006904, -4.08134, 9.197985, 0.97087634)
|
||||
light_energy = 0.4
|
||||
light_indirect_energy = 0.767
|
||||
shadow_blur = 0.47
|
||||
|
||||
[node name="SpotLight3D2" type="SpotLight3D" parent="Lights" unique_id=2071037822]
|
||||
transform = Transform3D(0.904133, 0.30962402, -0.2944087, 0.3084627, 0.0037425472, 0.9512291, 0.2956252, -0.95085174, -0.0921237, -3.629381, 10.86347, -2.0124264)
|
||||
light_energy = 16.0
|
||||
light_indirect_energy = 26.095
|
||||
distance_fade_enabled = true
|
||||
spot_range = 32.90586
|
||||
spot_angle = 73.93
|
||||
|
||||
[node name="SUN_DirectionalLight3D2" type="DirectionalLight3D" parent="Lights" unique_id=1003843933]
|
||||
transform = Transform3D(0.45811793, 0.34843865, -0.81775206, 0.5316611, 0.62986195, 0.56622505, 0.7123655, -0.69416475, 0.10329977, 0, 8.980043, 0)
|
||||
light_energy = 0.106
|
||||
shadow_enabled = true
|
||||
shadow_blur = 10.0
|
||||
Binary file not shown.
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://bm6rmt3xprhjs"
|
||||
path="res://.godot/imported/bear_level_arena.glb-b6a9df3b338c8b0345fe2642d8b715eb.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/bear_level_arena.glb"
|
||||
dest_files=["res://.godot/imported/bear_level_arena.glb-b6a9df3b338c8b0345fe2642d8b715eb.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
mesh_library/use_node_names_as_mesh_names=false
|
||||
array_mesh/deduplicate_surfaces=true
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
meshes/force_disable_compression=false
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
gltf/texture_map_mode=1
|
||||
Binary file not shown.
@@ -0,0 +1,45 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://dnltsqmuqcxh1"
|
||||
path="res://.godot/imported/Barrel.glb-8809615fbcbd5dc5b64a229316967555.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/breakables/Barrel.glb"
|
||||
dest_files=["res://.godot/imported/Barrel.glb-8809615fbcbd5dc5b64a229316967555.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
mesh_library/use_node_names_as_mesh_names=false
|
||||
array_mesh/deduplicate_surfaces=true
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
meshes/force_disable_compression=false
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
gltf/texture_map_mode=1
|
||||
Binary file not shown.
@@ -28,7 +28,7 @@ meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
meshes/force_disable_compression=false
|
||||
meshes/force_disable_compression=true
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,13 @@
|
||||
extends Node3D
|
||||
## Lobby geometry — watches the run state and raises the bear-gate grid once the arena has
|
||||
## been cleared. The DP flag stays as a designer override for testing the animation.
|
||||
|
||||
var bear_gate_open := false
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if bear_gate_open:
|
||||
return
|
||||
if Run.bear_gate_open() or DP.b("gate_unlocked_bear"):
|
||||
bear_gate_open = true
|
||||
$AnimationPlayer.play("Gate_opening")
|
||||
@@ -0,0 +1 @@
|
||||
uid://cwbf7jfkr8j10
|
||||
@@ -1,5 +0,0 @@
|
||||
extends Node3D
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
$AnimationPlayer.play("Taunt")
|
||||
@@ -1 +0,0 @@
|
||||
uid://bn3xwnlktwdlf
|
||||
Binary file not shown.
@@ -0,0 +1,44 @@
|
||||
[gd_scene format=3 uid="uid://o8ocjfprxa7u"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cn7fhjkro7637" path="res://bear.gd" id="1_beargd"]
|
||||
[ext_resource type="PackedScene" uid="uid://cofv5dbavesis" path="res://Assets/Bear.glb" id="2_bearglb"]
|
||||
[ext_resource type="PackedScene" uid="uid://bdbx0wwa73rhp" path="res://Assets/fx/Bear_FX.glb" id="3_bearfx"]
|
||||
[ext_resource type="Material" uid="uid://blpkmyikjnhbo" path="res://Materials/M_bear_claw_fx.tres" id="4_clawfx"]
|
||||
[ext_resource type="PackedScene" path="res://BearAttackHitboxes.tscn" id="5_hitboxes"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_body"]
|
||||
radius = 1.0
|
||||
height = 2.4
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_hit"]
|
||||
radius = 1.3
|
||||
height = 2.7
|
||||
|
||||
[node name="Bear" type="CharacterBody3D" unique_id=1573237287]
|
||||
script = ExtResource("1_beargd")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=830443382]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2, 0)
|
||||
shape = SubResource("CapsuleShape3D_body")
|
||||
|
||||
[node name="HitArea" type="Area3D" parent="." unique_id=365327397]
|
||||
monitorable = false
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="HitArea" unique_id=2111867348]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.35, 0)
|
||||
shape = SubResource("CapsuleShape3D_hit")
|
||||
|
||||
[node name="bear_model" parent="." unique_id=359217823 instance=ExtResource("2_bearglb")]
|
||||
|
||||
[node name="Bear_FX" parent="bear_model" unique_id=2070553519 instance=ExtResource("3_bearfx")]
|
||||
|
||||
[node name="Bear_fx_claw_attack_R" parent="bear_model/Bear_FX" index="2" unique_id=1939248432]
|
||||
surface_material_override/0 = ExtResource("4_clawfx")
|
||||
|
||||
[node name="Bear_fx_claw_attack_L" parent="bear_model/Bear_FX" index="3" unique_id=834640978]
|
||||
surface_material_override/0 = ExtResource("4_clawfx")
|
||||
|
||||
[node name="AttackHitboxes" parent="bear_model" instance=ExtResource("5_hitboxes")]
|
||||
|
||||
[editable path="bear_model"]
|
||||
[editable path="bear_model/Bear_FX"]
|
||||
@@ -0,0 +1,319 @@
|
||||
[gd_scene format=3 uid="uid://o8ocjfprxa7u"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cn7fhjkro7637" path="res://bear.gd" id="1_beargd"]
|
||||
[ext_resource type="PackedScene" uid="uid://cofv5dbavesis" path="res://Assets/Bear.glb" id="2_bearglb"]
|
||||
[ext_resource type="Script" uid="uid://bsbed05ifr18s" path="res://bear_test_cube.gd" id="3_rog1v"]
|
||||
[ext_resource type="PackedScene" uid="uid://bdbx0wwa73rhp" path="res://Assets/fx/Bear_FX.glb" id="4_rog1v"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_body"]
|
||||
radius = 1.0
|
||||
height = 2.4
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_hit"]
|
||||
radius = 1.3
|
||||
height = 2.7
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_bfebr"]
|
||||
size = Vector3(6.2019043, 8.561401, 7.0739746)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_rog1v"]
|
||||
size = Vector3(14.399288, 51.902206, 5.741211)
|
||||
|
||||
[node name="Bear" type="CharacterBody3D" unique_id=1573237287]
|
||||
script = ExtResource("1_beargd")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=830443382]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2, 0)
|
||||
shape = SubResource("CapsuleShape3D_body")
|
||||
|
||||
[node name="HitArea" type="Area3D" parent="." unique_id=365327397]
|
||||
monitorable = false
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="HitArea" unique_id=2111867348]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.35, 0)
|
||||
shape = SubResource("CapsuleShape3D_hit")
|
||||
|
||||
[node name="bear_model" parent="." unique_id=359217823 instance=ExtResource("2_bearglb")]
|
||||
|
||||
[node name="test_cube" type="Node3D" parent="bear_model" unique_id=646988893]
|
||||
script = ExtResource("3_rog1v")
|
||||
|
||||
[node name="Bear_FX" parent="bear_model/test_cube" unique_id=1183391245 instance=ExtResource("4_rog1v")]
|
||||
|
||||
[node name="Bear_fx_jump_smash" parent="bear_model/test_cube/Bear_FX" index="0" unique_id=750478984]
|
||||
visible = false
|
||||
|
||||
[node name="Bear_fx_claw_attack_R" parent="bear_model/test_cube/Bear_FX" index="1" unique_id=88064381]
|
||||
visible = false
|
||||
|
||||
[node name="Bear_fx_claw_attack_L" parent="bear_model/test_cube/Bear_FX" index="2" unique_id=1378755061]
|
||||
visible = false
|
||||
|
||||
[node name="Bear_fx_smash_hit" parent="bear_model/test_cube/Bear_FX" index="3" unique_id=1711579105]
|
||||
transform = Transform3D(0.55488384, -0.039024748, -0.018949924, 0.041069064, 0.55086076, 0.06814586, 0.013977209, -0.06933683, 0.5520644, 1.327292, -0.21312934, 5.190573)
|
||||
|
||||
[node name="RigidBody3D" type="AnimatableBody3D" parent="bear_model/test_cube/Bear_FX/Bear_fx_smash_hit" index="0" unique_id=1764208051]
|
||||
transform = Transform3D(1.0000001, -1.21071935e-08, -1.8626451e-08, -9.313226e-10, 0.99999994, 7.450581e-09, 3.7252903e-09, -1.4901161e-08, 0.99999994, 0, 0, 0)
|
||||
collision_layer = 8
|
||||
collision_mask = 2
|
||||
|
||||
[node name="CollisionShape3D2" type="CollisionShape3D" parent="bear_model/test_cube/Bear_FX/Bear_fx_smash_hit/RigidBody3D" unique_id=1779197150]
|
||||
transform = Transform3D(0.99993557, -0.00749125, -0.010078691, 0.0077760145, 0.999569, 0.028562747, 0.009858355, -0.028639637, 0.9995405, -1.5136471, 0.9093375, 35.591957)
|
||||
shape = SubResource("BoxShape3D_bfebr")
|
||||
disabled = true
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="bear_model/test_cube/Bear_FX/Bear_fx_smash_hit/RigidBody3D" unique_id=1276552823]
|
||||
transform = Transform3D(0.9935104, -0.040698394, -0.10621016, -0.108634494, -0.06290151, -0.9920882, 0.03369555, 0.99719334, -0.06691426, -1.6357545, -0.5093044, 12.68803)
|
||||
shape = SubResource("BoxShape3D_rog1v")
|
||||
|
||||
[node name="Skeleton3D" parent="bear_model/bear-rig" parent_id_path=PackedInt32Array(359217823, 1017999212) index="0" unique_id=1624609914]
|
||||
bones/1/position = Vector3(0.00851878, 0.24701798, 1.2888045)
|
||||
bones/1/rotation = Quaternion(0.29791054, -0.060797628, -0.056875575, 0.9509564)
|
||||
bones/2/rotation = Quaternion(0.084239505, -0.026013458, 0.009274505, 0.9960628)
|
||||
bones/2/scale = Vector3(0.9999999, 1.0000008, 0.99999934)
|
||||
bones/3/rotation = Quaternion(-0.14812404, -0.039577905, 0.049865585, 0.98691756)
|
||||
bones/4/rotation = Quaternion(-0.40577498, -0.03082885, 0.05040324, 0.9120612)
|
||||
bones/5/rotation = Quaternion(0.27801633, 0.0014148077, 0.015671793, 0.96044755)
|
||||
bones/6/rotation = Quaternion(0.50370073, 0.13519946, -0.093789615, 0.8480627)
|
||||
bones/7/rotation = Quaternion(0.75079185, 0.54212743, -0.37154716, 0.06604591)
|
||||
bones/8/rotation = Quaternion(0.22344273, -0.32689556, 0.65874565, -0.63973963)
|
||||
bones/9/rotation = Quaternion(0.026405705, -0.27415153, -0.3226086, 0.9055757)
|
||||
bones/10/rotation = Quaternion(0.030285481, -0.31167626, -0.037417818, 0.94896823)
|
||||
bones/11/rotation = Quaternion(0.751943, -0.5788067, 0.30500817, 0.080837056)
|
||||
bones/12/rotation = Quaternion(0.28422552, 0.2936944, -0.68526876, -0.6027987)
|
||||
bones/13/rotation = Quaternion(0.020711409, 0.24585825, 0.3386082, 0.9080029)
|
||||
bones/14/rotation = Quaternion(0.098969, 0.19860524, -0.007872087, 0.97503805)
|
||||
bones/15/rotation = Quaternion(0.6979166, 0.16086513, -0.15598965, 0.680222)
|
||||
bones/16/rotation = Quaternion(0.89734674, 0.09874082, -0.25790086, 0.34424722)
|
||||
bones/17/rotation = Quaternion(-0.13802421, 0.26758972, 0.081159085, 0.9501359)
|
||||
bones/17/scale = Vector3(0.9999998, 1.0000002, 1)
|
||||
bones/19/rotation = Quaternion(-4.514978e-15, 1, 7.4505806e-08, -5.523351e-07)
|
||||
bones/20/rotation = Quaternion(-0.49266306, -0.27058616, 0.262383, 0.7843606)
|
||||
bones/21/rotation = Quaternion(0.0016915401, 0.70246154, -0.001669446, 0.7117178)
|
||||
bones/22/rotation = Quaternion(-0.5496364, -0.3220462, -0.22350304, 0.73772115)
|
||||
bones/22/scale = Vector3(0.9999997, 0.9999998, 0.9999999)
|
||||
bones/23/rotation = Quaternion(-0.00015351747, 0.902104, -0.4315187, 0.00032039074)
|
||||
bones/24/rotation = Quaternion(6.628114e-12, 0.99999994, 5.2154085e-08, -0.00035543842)
|
||||
bones/25/position = Vector3(1.0191536, 3.5353048, 3.5049686)
|
||||
bones/25/rotation = Quaternion(-0.087474234, 0.16733547, 0.98056763, 0.053239316)
|
||||
bones/25/scale = Vector3(1, 17.518272, 1.0000001)
|
||||
bones/26/position = Vector3(-1.0831825, 3.749937, 2.5891113)
|
||||
bones/26/rotation = Quaternion(0.016340872, 0.19671263, 0.9801456, 0.01875816)
|
||||
bones/26/scale = Vector3(1.0000001, 18.765795, 1)
|
||||
bones/27/position = Vector3(1.0193456, -0.43209565, 2.5343885)
|
||||
bones/27/rotation = Quaternion(0.61800283, -0.11976056, 0.11976072, 0.7677157)
|
||||
bones/27/scale = Vector3(0.99999994, 16.85072, 1)
|
||||
bones/28/position = Vector3(-0.8340287, 1.0348616, 1.282705)
|
||||
bones/28/rotation = Quaternion(0.82860446, -0.029359974, 0.02935981, 0.5582926)
|
||||
bones/28/scale = Vector3(0.99999994, 32.068844, 1)
|
||||
bones/30/position = Vector3(0.032563455, -0.8335703, -0.9236449)
|
||||
bones/30/rotation = Quaternion(-0.8670657, 0.042821795, -0.07139772, 0.4911883)
|
||||
bones/31/position = Vector3(2.3450447e-08, -1.4631646, 0.23291242)
|
||||
bones/31/rotation = Quaternion(-6.0737464e-09, 4.8699293e-09, -1.4618977e-09, 1)
|
||||
bones/31/scale = Vector3(0.99999994, 0.9999999, 0.99999994)
|
||||
bones/32/position = Vector3(-0.04394375, -1.087056, 0.096768975)
|
||||
bones/32/rotation = Quaternion(-0.8343034, 0.119118, -0.061490715, 0.5347595)
|
||||
bones/32/scale = Vector3(0.9999999, 0.99999976, 0.99999964)
|
||||
bones/33/position = Vector3(3.977649e-08, -1.4631644, 0.23291251)
|
||||
bones/33/rotation = Quaternion(-8.833673e-08, -2.419923e-08, -6.733043e-09, 1)
|
||||
bones/33/scale = Vector3(0.9999998, 0.9999998, 0.99999994)
|
||||
bones/35/position = Vector3(1.0184407e-08, -1.0594703, -5.9146995e-08)
|
||||
bones/35/rotation = Quaternion(0.99971783, 1.3593646e-07, 5.3695976e-06, -0.023754615)
|
||||
bones/35/scale = Vector3(0.99999976, 0.9999998, 1.0000012)
|
||||
bones/39/position = Vector3(0.8199172, 0.25251278, 0.47214246)
|
||||
bones/39/rotation = Quaternion(0.71402234, 0.34199142, 0.043267474, 0.60937834)
|
||||
bones/39/scale = Vector3(1.0000004, 0.9999996, 0.9999991)
|
||||
bones/40/rotation = Quaternion(0.9336719, 1.2799235e-07, 3.7337827e-08, 0.3581296)
|
||||
bones/40/scale = Vector3(1.0000004, 1.0000001, 1.0000001)
|
||||
bones/41/rotation = Quaternion(-0.13802455, 0.26758966, 0.08115916, 0.9501359)
|
||||
bones/41/scale = Vector3(0.99999946, 0.99999976, 0.9999996)
|
||||
bones/42/position = Vector3(-1.9729964e-07, 0.56145483, 7.283501e-08)
|
||||
bones/46/scale = Vector3(0.99999946, 0.99999964, 0.9999999)
|
||||
bones/48/rotation = Quaternion(-2.9741386e-07, 0.13593404, 1.01778824e-07, 0.9907179)
|
||||
bones/48/scale = Vector3(0.9999993, 0.9999996, 0.9999999)
|
||||
bones/50/scale = Vector3(0.99999994, 0.99999994, 0.9999998)
|
||||
bones/51/rotation = Quaternion(-2.5567479e-08, -0.20499781, -2.3086146e-08, 0.9787625)
|
||||
bones/51/scale = Vector3(0.9999999, 0.99999964, 0.99999964)
|
||||
bones/53/position = Vector3(-0.8199191, 0.25251284, 0.47213903)
|
||||
bones/53/rotation = Quaternion(-0.5351706, 0.35860845, -0.15898216, 0.74814254)
|
||||
bones/53/scale = Vector3(1, 0.99999875, 0.99999946)
|
||||
bones/54/rotation = Quaternion(0.0023762286, -4.7362324e-08, -6.475868e-08, 0.9999972)
|
||||
bones/55/rotation = Quaternion(-0.54963607, -0.322046, -0.22350314, 0.73772144)
|
||||
bones/55/scale = Vector3(1.0000002, 1, 1.0000002)
|
||||
bones/56/position = Vector3(0.0013532753, 0.57868266, 0.05537574)
|
||||
bones/56/rotation = Quaternion(-0.00015348212, 0.90210384, -0.43151882, 0.0003204293)
|
||||
bones/57/rotation = Quaternion(0.70073944, -0.70073956, -0.094679825, -0.09467953)
|
||||
bones/60/scale = Vector3(1.0000004, 1.0000004, 1.0000002)
|
||||
bones/62/rotation = Quaternion(-1.7092354e-08, -0.18223058, 2.6700846e-08, 0.98325586)
|
||||
bones/62/scale = Vector3(1.0000002, 1.0000002, 1.0000001)
|
||||
bones/64/scale = Vector3(1.0000004, 1.0000004, 1)
|
||||
bones/65/rotation = Quaternion(-1.0345744e-08, -0.3796584, -4.0675246e-08, 0.9251268)
|
||||
bones/65/scale = Vector3(1.0000002, 1.0000004, 1.0000004)
|
||||
bones/67/rotation = Quaternion(0.7179022, -7.671307e-07, 7.885642e-07, 0.696144)
|
||||
bones/67/scale = Vector3(1.0000004, 0.9999986, 0.99999994)
|
||||
bones/68/rotation = Quaternion(0.9776482, 2.0029378e-07, 1.0460874e-06, -0.2102479)
|
||||
bones/68/scale = Vector3(1.0000004, 1.0000004, 0.9999982)
|
||||
bones/69/position = Vector3(-2.4645832e-08, -6.861796e-09, 7.455772e-08)
|
||||
bones/69/rotation = Quaternion(-0.8315212, 2.5276703e-08, -9.3330055e-09, 0.5554931)
|
||||
bones/69/scale = Vector3(1, 1.0000001, 1.0000002)
|
||||
bones/70/rotation = Quaternion(0.67750055, 8.820757e-08, 7.575834e-08, 0.7355223)
|
||||
bones/70/scale = Vector3(1, 1, 1)
|
||||
bones/71/scale = Vector3(0.9999999, 1, 0.9999999)
|
||||
bones/72/rotation = Quaternion(-2.1641608e-07, -4.6565607e-10, -4.6576065e-10, 1)
|
||||
bones/75/rotation = Quaternion(-0.34314692, -0.20321459, -0.2785586, 0.8737043)
|
||||
bones/76/position = Vector3(1.01587794e-07, -1.5306958e-07, -4.3554866e-07)
|
||||
bones/76/rotation = Quaternion(-0.51764834, -7.167482e-08, 1.7163823e-07, 0.85559356)
|
||||
bones/77/rotation = Quaternion(0.93367195, 1.2110854e-07, 3.8556042e-08, 0.35812962)
|
||||
bones/78/position = Vector3(0.8199172, 0.25251257, 0.47214243)
|
||||
bones/78/rotation = Quaternion(0.6979164, 0.16086517, -0.15598962, 0.6802223)
|
||||
bones/78/scale = Vector3(1.0000004, 0.9999997, 0.99999905)
|
||||
bones/80/rotation = Quaternion(0.7179022, -7.6713064e-07, 7.885641e-07, 0.696144)
|
||||
bones/80/scale = Vector3(1.0000004, 0.9999986, 0.99999994)
|
||||
bones/81/rotation = Quaternion(0.97764814, 1.9846473e-07, 1.0426893e-06, -0.21024783)
|
||||
bones/81/scale = Vector3(1.0000004, 1.0000002, 0.9999982)
|
||||
bones/82/position = Vector3(6.103571e-08, 8.8816435e-08, -3.6955274e-09)
|
||||
bones/82/rotation = Quaternion(-0.8315211, 2.3407136e-08, -1.2821512e-08, 0.5554932)
|
||||
bones/82/scale = Vector3(0.99999994, 0.99999994, 1)
|
||||
bones/83/rotation = Quaternion(0.6775009, -8.600083e-08, -8.977273e-08, 0.735522)
|
||||
bones/83/scale = Vector3(1, 1.0000001, 1)
|
||||
bones/84/scale = Vector3(0.99999994, 1.0000001, 0.9999999)
|
||||
bones/85/rotation = Quaternion(2.6833732e-07, -9.313788e-10, -2.5612494e-09, 1)
|
||||
bones/85/scale = Vector3(1.0000001, 1, 1.0000001)
|
||||
bones/87/rotation = Quaternion(-0.5230753, 0.20132942, 0.026226493, 0.8277505)
|
||||
bones/88/rotation = Quaternion(0.61967987, 0.23118778, 0.3169036, 0.679795)
|
||||
bones/89/position = Vector3(2.953037e-07, 4.9207458e-08, -4.3015167e-08)
|
||||
bones/89/rotation = Quaternion(-0.001144886, -2.973514e-08, 2.817069e-08, 0.9999994)
|
||||
bones/90/rotation = Quaternion(0.0023764072, -4.0769752e-08, -7.0690255e-08, 0.99999726)
|
||||
bones/91/position = Vector3(-0.8199192, 0.2525128, 0.47213912)
|
||||
bones/91/rotation = Quaternion(-0.49266297, -0.27058598, 0.2623832, 0.78436047)
|
||||
bones/91/scale = Vector3(1.0000002, 0.999999, 0.99999964)
|
||||
bones/96/position = Vector3(-0.021971898, -1.2751104, 0.16484088)
|
||||
bones/96/rotation = Quaternion(-0.47603267, 0.067788206, -0.035077166, 0.8761091)
|
||||
bones/96/scale = Vector3(0.9999999, 0.9999999, 0.99999976)
|
||||
bones/97/rotation = Quaternion(0.997074, -1.2813135e-07, 1.666339e-06, -0.07644201)
|
||||
bones/98/position = Vector3(0.01993539, 0.08757691, 0.045667563)
|
||||
bones/98/rotation = Quaternion(0.1475291, 0.03397043, -0.019923227, 0.9882734)
|
||||
bones/98/scale = Vector3(1, 1.0000011, 1.0000023)
|
||||
bones/101/position = Vector3(-0.021972047, 0.8282039, 0.0959422)
|
||||
bones/101/rotation = Quaternion(0.8371564, 0.04015539, 0.06490996, 0.5416119)
|
||||
bones/101/scale = Vector3(1, 1.0000066, 0.99998474)
|
||||
bones/102/rotation = Quaternion(0.95545256, -6.924111e-08, 2.2887033e-07, -0.29514462)
|
||||
bones/103/position = Vector3(0.17285576, 0.72785676, 1.0822707)
|
||||
bones/103/rotation = Quaternion(0.27801546, 0.0014157619, 0.015671493, 0.9604477)
|
||||
bones/103/scale = Vector3(1.0000002, 1.000013, 1.0000246)
|
||||
bones/104/rotation = Quaternion(0.5037003, 0.13519715, -0.093790196, 0.84806323)
|
||||
bones/104/scale = Vector3(1.0000721, 1.0000457, 0.99993384)
|
||||
bones/105/rotation = Quaternion(0.97757924, -0.053521663, -0.054415643, -0.19624804)
|
||||
bones/105/scale = Vector3(1.0000001, 1.0000083, 1.0000036)
|
||||
bones/106/position = Vector3(0.023142539, -0.54231995, -0.9607401)
|
||||
bones/106/rotation = Quaternion(0.99272084, -0.08158898, -0.03307842, -0.08218607)
|
||||
bones/107/rotation = Quaternion(0.903578, -0.12777254, -0.05477002, -0.4052421)
|
||||
bones/107/scale = Vector3(0.9999992, 0.9999624, 1.0000123)
|
||||
bones/108/position = Vector3(-1.1340098e-08, 7.923448e-07, 9.0939814e-08)
|
||||
bones/108/rotation = Quaternion(0.98967296, 0.0031370325, 0.10343237, -0.09919364)
|
||||
bones/110/rotation = Quaternion(9.815354e-07, 7.072085e-10, -9.586452e-08, 1)
|
||||
bones/110/scale = Vector3(0.99999994, 0.99999976, 1.0000001)
|
||||
bones/113/position = Vector3(0.07716276, 0.6410925, 0.71644557)
|
||||
bones/113/rotation = Quaternion(0.75079244, 0.54212654, -0.3715475, 0.0660462)
|
||||
bones/114/position = Vector3(-0.031743176, 0.60466695, -0.39704067)
|
||||
bones/114/rotation = Quaternion(0.4176498, -0.11118397, 0.55639553, -0.70966953)
|
||||
bones/114/scale = Vector3(1.0000015, 1.0000038, 1.0000079)
|
||||
bones/115/rotation = Quaternion(-0.07547326, 0.02173067, -0.31477332, 0.945912)
|
||||
bones/115/scale = Vector3(0.9999974, 1.0000036, 0.99999976)
|
||||
bones/116/rotation = Quaternion(0.03028559, -0.3116764, -0.037417784, 0.9489682)
|
||||
bones/116/scale = Vector3(1.0000005, 0.9999972, 1.0000013)
|
||||
bones/119/scale = Vector3(1.0000043, 0.9999975, 0.99999744)
|
||||
bones/121/rotation = Quaternion(-4.820391e-08, -0.1579088, -2.0880496e-08, 0.98745376)
|
||||
bones/121/scale = Vector3(1.0000037, 0.99999774, 0.9999977)
|
||||
bones/123/scale = Vector3(1.000003, 0.9999977, 0.99999917)
|
||||
bones/124/rotation = Quaternion(-3.1036683e-07, 0.17317644, 6.989145e-08, 0.9848908)
|
||||
bones/124/scale = Vector3(1.0000037, 0.9999978, 0.99999875)
|
||||
bones/126/rotation = Quaternion(-0.5163543, -0.16816929, 0.6340875, 0.550482)
|
||||
bones/126/scale = Vector3(1.0000015, 1.000007, 1.000004)
|
||||
bones/127/rotation = Quaternion(-0.24332331, 0.12663932, 0.6612194, 0.6982444)
|
||||
bones/127/scale = Vector3(1.0000017, 1.0000014, 1.0000097)
|
||||
bones/128/position = Vector3(-0.008928956, 0.128764, -0.06877987)
|
||||
bones/128/rotation = Quaternion(0.025037244, 0.39930493, -0.88358396, 0.24332726)
|
||||
bones/129/rotation = Quaternion(-0.07547334, 0.021730714, -0.31477335, 0.94591194)
|
||||
bones/131/rotation = Quaternion(-0.41802245, -0.28161782, 0.08442414, 0.85954714)
|
||||
bones/132/rotation = Quaternion(-0.5281791, -0.34319904, -0.62196887, -0.46518382)
|
||||
bones/133/rotation = Quaternion(-0.012777329, 0.011854946, 0.00015161165, 0.9998482)
|
||||
bones/133/scale = Vector3(1.0423008, 1.0423008, 1.0423006)
|
||||
bones/134/rotation = Quaternion(0.02152103, -3.688601e-08, -1.5255387e-07, 0.99976844)
|
||||
bones/134/scale = Vector3(0.9882629, 0.9882634, 0.98826265)
|
||||
bones/135/position = Vector3(-0.0317431, 0.60466677, -0.39704087)
|
||||
bones/135/rotation = Quaternion(0.22344373, -0.32689255, 0.658746, -0.6397405)
|
||||
bones/135/scale = Vector3(1.0000048, 1.0000036, 1.0000046)
|
||||
bones/137/position = Vector3(-0.33244255, 0.70370555, 0.67530614)
|
||||
bones/137/rotation = Quaternion(0.7519437, -0.5788053, 0.30500948, 0.08083551)
|
||||
bones/138/position = Vector3(-0.19594865, 0.65740275, -0.22511396)
|
||||
bones/138/rotation = Quaternion(0.36201134, 0.22157827, -0.6475769, -0.63284683)
|
||||
bones/138/scale = Vector3(1.0000019, 1.0000045, 1.0000057)
|
||||
bones/139/rotation = Quaternion(-0.018797327, 0.13857716, 0.33871746, 0.9304373)
|
||||
bones/139/scale = Vector3(0.9999983, 1.0000024, 0.9999992)
|
||||
bones/140/rotation = Quaternion(0.09896898, 0.1986053, -0.00787212, 0.975038)
|
||||
bones/140/scale = Vector3(1.0000031, 0.9999977, 0.9999988)
|
||||
bones/143/scale = Vector3(1.000005, 0.99999815, 0.9999967)
|
||||
bones/145/rotation = Quaternion(-1.7910523e-07, 0.10005118, -9.714451e-08, 0.9949823)
|
||||
bones/145/scale = Vector3(1.0000045, 0.99999803, 0.9999968)
|
||||
bones/147/scale = Vector3(1.0000035, 0.99999845, 0.9999981)
|
||||
bones/148/rotation = Quaternion(2.0844507e-07, 0.011625211, 4.5709146e-07, 0.9999325)
|
||||
bones/148/scale = Vector3(1.000004, 0.9999991, 0.999998)
|
||||
bones/150/rotation = Quaternion(-0.51635444, 0.16816957, -0.63408744, 0.55048186)
|
||||
bones/150/scale = Vector3(1.000001, 1.0000067, 1.000004)
|
||||
bones/151/rotation = Quaternion(-0.24332346, -0.12663896, -0.6612195, 0.6982443)
|
||||
bones/151/scale = Vector3(1.0000011, 1.0000017, 1.0000095)
|
||||
bones/152/position = Vector3(0.027921734, -0.124764316, 0.07102555)
|
||||
bones/152/rotation = Quaternion(-0.12973516, 0.47151387, -0.86254627, -0.12983702)
|
||||
bones/153/rotation = Quaternion(-0.018797398, 0.13857722, 0.33871746, 0.9304373)
|
||||
bones/155/rotation = Quaternion(-0.36541468, 0.16190512, -0.07102372, 0.91390073)
|
||||
bones/155/scale = Vector3(0.99999994, 1, 0.9999998)
|
||||
bones/156/rotation = Quaternion(0.68045896, -0.19169958, -0.3896983, 0.59022206)
|
||||
bones/157/rotation = Quaternion(-0.01277751, -0.011854968, -0.0001513001, 0.9998481)
|
||||
bones/157/scale = Vector3(1.0423003, 1.0422994, 1.0423005)
|
||||
bones/158/rotation = Quaternion(0.021521209, -2.5687226e-07, -2.570953e-07, 0.9997684)
|
||||
bones/158/scale = Vector3(0.9882631, 0.98826426, 0.9882618)
|
||||
bones/159/position = Vector3(-0.19594839, 0.65740275, -0.2251139)
|
||||
bones/159/rotation = Quaternion(0.28422734, 0.29369113, -0.68527013, -0.60279787)
|
||||
bones/159/scale = Vector3(1.0000027, 1.0000043, 1.0000049)
|
||||
bones/161/position = Vector3(0.07716276, 0.6410925, 0.71644557)
|
||||
bones/161/rotation = Quaternion(0.75079244, 0.54212654, -0.3715475, 0.0660462)
|
||||
bones/162/position = Vector3(-0.33244255, 0.70370555, 0.67530614)
|
||||
bones/162/rotation = Quaternion(0.7519437, -0.5788053, 0.30500948, 0.08083551)
|
||||
bones/165/position = Vector3(-1.5017577e-08, 0.26895812, -1.6243575e-08)
|
||||
bones/165/rotation = Quaternion(-0.019247467, -0.20323175, 0.97894067, -0.0012537595)
|
||||
bones/166/position = Vector3(0.0034187725, -3.131728, 0.9674823)
|
||||
bones/167/position = Vector3(0.209171, 5.0901713, -2.6670303)
|
||||
bones/167/rotation = Quaternion(0.16656846, 0.015223213, 0.18356222, 0.9686734)
|
||||
bones/167/scale = Vector3(0.9999988, 0.9999987, 1.0000023)
|
||||
bones/168/position = Vector3(0.18381567, -0.9622623, 0.9894084)
|
||||
bones/168/rotation = Quaternion(0.9362244, -6.2652596e-08, -0.34127164, -0.083770975)
|
||||
bones/168/scale = Vector3(1.0000011, 1.0000015, 1.0000101)
|
||||
bones/170/position = Vector3(0.748137, 0.69556385, 3.7252903e-09)
|
||||
bones/170/rotation = Quaternion(0.019250846, -0.20323181, 0.9789406, 0.001253055)
|
||||
bones/171/position = Vector3(0.6322718, -2.6572587, 0.6064028)
|
||||
bones/172/position = Vector3(-1.5122895, 4.4686184, -2.7014794)
|
||||
bones/172/rotation = Quaternion(0.21553025, -0.03620148, 0.11066054, 0.9695311)
|
||||
bones/172/scale = Vector3(0.99999887, 0.9999985, 1.0000024)
|
||||
bones/173/position = Vector3(0.18381546, -0.96226203, 0.9894083)
|
||||
bones/173/rotation = Quaternion(0.93622434, -2.9748788e-08, 0.34127158, -0.083771475)
|
||||
bones/173/scale = Vector3(0.999999, 1.0000014, 0.99999464)
|
||||
bones/175/position = Vector3(0.2542465, -2.2077389, 0.9589075)
|
||||
bones/175/rotation = Quaternion(-0.008919476, -0.00021326332, -0.000697989, 0.99996)
|
||||
bones/183/position = Vector3(-1.982537e-07, 5.9604563e-08, -1.517833e-08)
|
||||
bones/185/rotation = Quaternion(5.4077844e-07, -0.20349081, 0.97907686, -1.12395135e-07)
|
||||
bones/186/position = Vector3(0.57634556, 3.7607954, 0.15364014)
|
||||
bones/186/rotation = Quaternion(-0.9604305, -0.020206233, -0.08076539, -0.26578543)
|
||||
bones/186/scale = Vector3(0.9999997, 0.99999994, 1)
|
||||
bones/187/rotation = Quaternion(0.15451065, -2.0305349e-09, -2.0850066e-09, 0.9879911)
|
||||
bones/187/scale = Vector3(1.0000002, 0.99999994, 0.9999999)
|
||||
bones/197/position = Vector3(-0.0011225368, -0.015787723, -0.051779967)
|
||||
bones/199/rotation = Quaternion(0.00034800146, -0.20349097, 0.9790768, -7.2328476e-05)
|
||||
bones/200/position = Vector3(-1.0407574, 3.6267605, -0.083099455)
|
||||
bones/200/rotation = Quaternion(-0.9604305, -0.020206233, -0.08076539, -0.26578543)
|
||||
bones/200/scale = Vector3(0.9999997, 0.99999994, 1)
|
||||
bones/201/rotation = Quaternion(0.15451066, -1.9585848e-09, -2.5450761e-09, 0.9879911)
|
||||
bones/201/scale = Vector3(1.0000002, 0.99999994, 0.99999994)
|
||||
|
||||
[editable path="bear_model"]
|
||||
[editable path="bear_model/test_cube/Bear_FX"]
|
||||
@@ -0,0 +1,319 @@
|
||||
[gd_scene format=3 uid="uid://o8ocjfprxa7u"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cn7fhjkro7637" path="res://bear.gd" id="1_beargd"]
|
||||
[ext_resource type="PackedScene" uid="uid://cofv5dbavesis" path="res://Assets/Bear.glb" id="2_bearglb"]
|
||||
[ext_resource type="Script" uid="uid://bsbed05ifr18s" path="res://bear_test_cube.gd" id="3_rog1v"]
|
||||
[ext_resource type="PackedScene" uid="uid://bdbx0wwa73rhp" path="res://Assets/fx/Bear_FX.glb" id="4_rog1v"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_body"]
|
||||
radius = 1.0
|
||||
height = 2.4
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_hit"]
|
||||
radius = 1.3
|
||||
height = 2.7
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_bfebr"]
|
||||
size = Vector3(6.2019043, 8.561401, 7.0739746)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_rog1v"]
|
||||
size = Vector3(14.399288, 51.902206, 5.741211)
|
||||
|
||||
[node name="Bear" type="CharacterBody3D" unique_id=1573237287]
|
||||
script = ExtResource("1_beargd")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=830443382]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2, 0)
|
||||
shape = SubResource("CapsuleShape3D_body")
|
||||
|
||||
[node name="HitArea" type="Area3D" parent="." unique_id=365327397]
|
||||
monitorable = false
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="HitArea" unique_id=2111867348]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.35, 0)
|
||||
shape = SubResource("CapsuleShape3D_hit")
|
||||
|
||||
[node name="bear_model" parent="." unique_id=359217823 instance=ExtResource("2_bearglb")]
|
||||
|
||||
[node name="test_cube" type="Node3D" parent="bear_model" unique_id=646988893]
|
||||
script = ExtResource("3_rog1v")
|
||||
|
||||
[node name="Bear_FX" parent="bear_model/test_cube" unique_id=1183391245 instance=ExtResource("4_rog1v")]
|
||||
|
||||
[node name="Bear_fx_jump_smash" parent="bear_model/test_cube/Bear_FX" index="0" unique_id=750478984]
|
||||
visible = false
|
||||
|
||||
[node name="Bear_fx_claw_attack_R" parent="bear_model/test_cube/Bear_FX" index="1" unique_id=88064381]
|
||||
visible = false
|
||||
|
||||
[node name="Bear_fx_claw_attack_L" parent="bear_model/test_cube/Bear_FX" index="2" unique_id=1378755061]
|
||||
visible = false
|
||||
|
||||
[node name="Bear_fx_smash_hit" parent="bear_model/test_cube/Bear_FX" index="3" unique_id=1711579105]
|
||||
transform = Transform3D(0.55488384, -0.039024748, -0.018949924, 0.041069064, 0.55086076, 0.06814586, 0.013977209, -0.06933683, 0.5520644, 1.327292, -0.21312934, 5.190573)
|
||||
|
||||
[node name="RigidBody3D" type="AnimatableBody3D" parent="bear_model/test_cube/Bear_FX/Bear_fx_smash_hit" index="0" unique_id=1764208051]
|
||||
transform = Transform3D(1.0000001, -1.21071935e-08, -1.8626451e-08, -9.313226e-10, 0.99999994, 7.450581e-09, 3.7252903e-09, -1.4901161e-08, 0.99999994, 0, 0, 0)
|
||||
collision_layer = 8
|
||||
collision_mask = 2
|
||||
|
||||
[node name="CollisionShape3D2" type="CollisionShape3D" parent="bear_model/test_cube/Bear_FX/Bear_fx_smash_hit/RigidBody3D" unique_id=1779197150]
|
||||
transform = Transform3D(0.99993557, -0.00749125, -0.010078691, 0.0077760145, 0.999569, 0.028562747, 0.009858355, -0.028639637, 0.9995405, -1.5136471, 0.9093375, 35.591957)
|
||||
shape = SubResource("BoxShape3D_bfebr")
|
||||
disabled = true
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="bear_model/test_cube/Bear_FX/Bear_fx_smash_hit/RigidBody3D" unique_id=1276552823]
|
||||
transform = Transform3D(0.9935104, -0.040698394, -0.10621016, -0.108634494, -0.06290151, -0.9920882, 0.03369555, 0.99719334, -0.06691426, -1.6357545, -0.5093044, 12.68803)
|
||||
shape = SubResource("BoxShape3D_rog1v")
|
||||
|
||||
[node name="Skeleton3D" parent="bear_model/bear-rig" parent_id_path=PackedInt32Array(359217823, 1017999212) index="0" unique_id=1624609914]
|
||||
bones/1/position = Vector3(0.00851878, 0.24701798, 1.2888045)
|
||||
bones/1/rotation = Quaternion(0.29791054, -0.060797628, -0.056875575, 0.9509564)
|
||||
bones/2/rotation = Quaternion(0.084239505, -0.026013458, 0.009274505, 0.9960628)
|
||||
bones/2/scale = Vector3(0.9999999, 1.0000008, 0.99999934)
|
||||
bones/3/rotation = Quaternion(-0.14812404, -0.039577905, 0.049865585, 0.98691756)
|
||||
bones/4/rotation = Quaternion(-0.40577498, -0.03082885, 0.05040324, 0.9120612)
|
||||
bones/5/rotation = Quaternion(0.27801633, 0.0014148077, 0.015671793, 0.96044755)
|
||||
bones/6/rotation = Quaternion(0.50370073, 0.13519946, -0.093789615, 0.8480627)
|
||||
bones/7/rotation = Quaternion(0.75079185, 0.54212743, -0.37154716, 0.06604591)
|
||||
bones/8/rotation = Quaternion(0.22344273, -0.32689556, 0.65874565, -0.63973963)
|
||||
bones/9/rotation = Quaternion(0.026405705, -0.27415153, -0.3226086, 0.9055757)
|
||||
bones/10/rotation = Quaternion(0.030285481, -0.31167626, -0.037417818, 0.94896823)
|
||||
bones/11/rotation = Quaternion(0.751943, -0.5788067, 0.30500817, 0.080837056)
|
||||
bones/12/rotation = Quaternion(0.28422552, 0.2936944, -0.68526876, -0.6027987)
|
||||
bones/13/rotation = Quaternion(0.020711409, 0.24585825, 0.3386082, 0.9080029)
|
||||
bones/14/rotation = Quaternion(0.098969, 0.19860524, -0.007872087, 0.97503805)
|
||||
bones/15/rotation = Quaternion(0.6979166, 0.16086513, -0.15598965, 0.680222)
|
||||
bones/16/rotation = Quaternion(0.89734674, 0.09874082, -0.25790086, 0.34424722)
|
||||
bones/17/rotation = Quaternion(-0.13802421, 0.26758972, 0.081159085, 0.9501359)
|
||||
bones/17/scale = Vector3(0.9999998, 1.0000002, 1)
|
||||
bones/19/rotation = Quaternion(-4.514978e-15, 1, 7.4505806e-08, -5.523351e-07)
|
||||
bones/20/rotation = Quaternion(-0.49266306, -0.27058616, 0.262383, 0.7843606)
|
||||
bones/21/rotation = Quaternion(0.0016915401, 0.70246154, -0.001669446, 0.7117178)
|
||||
bones/22/rotation = Quaternion(-0.5496364, -0.3220462, -0.22350304, 0.73772115)
|
||||
bones/22/scale = Vector3(0.9999997, 0.9999998, 0.9999999)
|
||||
bones/23/rotation = Quaternion(-0.00015351747, 0.902104, -0.4315187, 0.00032039074)
|
||||
bones/24/rotation = Quaternion(6.628114e-12, 0.99999994, 5.2154085e-08, -0.00035543842)
|
||||
bones/25/position = Vector3(1.0191536, 3.5353048, 3.5049686)
|
||||
bones/25/rotation = Quaternion(-0.087474234, 0.16733547, 0.98056763, 0.053239316)
|
||||
bones/25/scale = Vector3(1, 17.518272, 1.0000001)
|
||||
bones/26/position = Vector3(-1.0831825, 3.749937, 2.5891113)
|
||||
bones/26/rotation = Quaternion(0.016340872, 0.19671263, 0.9801456, 0.01875816)
|
||||
bones/26/scale = Vector3(1.0000001, 18.765795, 1)
|
||||
bones/27/position = Vector3(1.0193456, -0.43209565, 2.5343885)
|
||||
bones/27/rotation = Quaternion(0.61800283, -0.11976056, 0.11976072, 0.7677157)
|
||||
bones/27/scale = Vector3(0.99999994, 16.85072, 1)
|
||||
bones/28/position = Vector3(-0.8340287, 1.0348616, 1.282705)
|
||||
bones/28/rotation = Quaternion(0.82860446, -0.029359974, 0.02935981, 0.5582926)
|
||||
bones/28/scale = Vector3(0.99999994, 32.068844, 1)
|
||||
bones/30/position = Vector3(0.032563455, -0.8335703, -0.9236449)
|
||||
bones/30/rotation = Quaternion(-0.8670657, 0.042821795, -0.07139772, 0.4911883)
|
||||
bones/31/position = Vector3(2.3450447e-08, -1.4631646, 0.23291242)
|
||||
bones/31/rotation = Quaternion(-6.0737464e-09, 4.8699293e-09, -1.4618977e-09, 1)
|
||||
bones/31/scale = Vector3(0.99999994, 0.9999999, 0.99999994)
|
||||
bones/32/position = Vector3(-0.04394375, -1.087056, 0.096768975)
|
||||
bones/32/rotation = Quaternion(-0.8343034, 0.119118, -0.061490715, 0.5347595)
|
||||
bones/32/scale = Vector3(0.9999999, 0.99999976, 0.99999964)
|
||||
bones/33/position = Vector3(3.977649e-08, -1.4631644, 0.23291251)
|
||||
bones/33/rotation = Quaternion(-8.833673e-08, -2.419923e-08, -6.733043e-09, 1)
|
||||
bones/33/scale = Vector3(0.9999998, 0.9999998, 0.99999994)
|
||||
bones/35/position = Vector3(1.0184407e-08, -1.0594703, -5.9146995e-08)
|
||||
bones/35/rotation = Quaternion(0.99971783, 1.3593646e-07, 5.3695976e-06, -0.023754615)
|
||||
bones/35/scale = Vector3(0.99999976, 0.9999998, 1.0000012)
|
||||
bones/39/position = Vector3(0.8199172, 0.25251278, 0.47214246)
|
||||
bones/39/rotation = Quaternion(0.71402234, 0.34199142, 0.043267474, 0.60937834)
|
||||
bones/39/scale = Vector3(1.0000004, 0.9999996, 0.9999991)
|
||||
bones/40/rotation = Quaternion(0.9336719, 1.2799235e-07, 3.7337827e-08, 0.3581296)
|
||||
bones/40/scale = Vector3(1.0000004, 1.0000001, 1.0000001)
|
||||
bones/41/rotation = Quaternion(-0.13802455, 0.26758966, 0.08115916, 0.9501359)
|
||||
bones/41/scale = Vector3(0.99999946, 0.99999976, 0.9999996)
|
||||
bones/42/position = Vector3(-1.9729964e-07, 0.56145483, 7.283501e-08)
|
||||
bones/46/scale = Vector3(0.99999946, 0.99999964, 0.9999999)
|
||||
bones/48/rotation = Quaternion(-2.9741386e-07, 0.13593404, 1.01778824e-07, 0.9907179)
|
||||
bones/48/scale = Vector3(0.9999993, 0.9999996, 0.9999999)
|
||||
bones/50/scale = Vector3(0.99999994, 0.99999994, 0.9999998)
|
||||
bones/51/rotation = Quaternion(-2.5567479e-08, -0.20499781, -2.3086146e-08, 0.9787625)
|
||||
bones/51/scale = Vector3(0.9999999, 0.99999964, 0.99999964)
|
||||
bones/53/position = Vector3(-0.8199191, 0.25251284, 0.47213903)
|
||||
bones/53/rotation = Quaternion(-0.5351706, 0.35860845, -0.15898216, 0.74814254)
|
||||
bones/53/scale = Vector3(1, 0.99999875, 0.99999946)
|
||||
bones/54/rotation = Quaternion(0.0023762286, -4.7362324e-08, -6.475868e-08, 0.9999972)
|
||||
bones/55/rotation = Quaternion(-0.54963607, -0.322046, -0.22350314, 0.73772144)
|
||||
bones/55/scale = Vector3(1.0000002, 1, 1.0000002)
|
||||
bones/56/position = Vector3(0.0013532753, 0.57868266, 0.05537574)
|
||||
bones/56/rotation = Quaternion(-0.00015348212, 0.90210384, -0.43151882, 0.0003204293)
|
||||
bones/57/rotation = Quaternion(0.70073944, -0.70073956, -0.094679825, -0.09467953)
|
||||
bones/60/scale = Vector3(1.0000004, 1.0000004, 1.0000002)
|
||||
bones/62/rotation = Quaternion(-1.7092354e-08, -0.18223058, 2.6700846e-08, 0.98325586)
|
||||
bones/62/scale = Vector3(1.0000002, 1.0000002, 1.0000001)
|
||||
bones/64/scale = Vector3(1.0000004, 1.0000004, 1)
|
||||
bones/65/rotation = Quaternion(-1.0345744e-08, -0.3796584, -4.0675246e-08, 0.9251268)
|
||||
bones/65/scale = Vector3(1.0000002, 1.0000004, 1.0000004)
|
||||
bones/67/rotation = Quaternion(0.7179022, -7.671307e-07, 7.885642e-07, 0.696144)
|
||||
bones/67/scale = Vector3(1.0000004, 0.9999986, 0.99999994)
|
||||
bones/68/rotation = Quaternion(0.9776482, 2.0029378e-07, 1.0460874e-06, -0.2102479)
|
||||
bones/68/scale = Vector3(1.0000004, 1.0000004, 0.9999982)
|
||||
bones/69/position = Vector3(-2.4645832e-08, -6.861796e-09, 7.455772e-08)
|
||||
bones/69/rotation = Quaternion(-0.8315212, 2.5276703e-08, -9.3330055e-09, 0.5554931)
|
||||
bones/69/scale = Vector3(1, 1.0000001, 1.0000002)
|
||||
bones/70/rotation = Quaternion(0.67750055, 8.820757e-08, 7.575834e-08, 0.7355223)
|
||||
bones/70/scale = Vector3(1, 1, 1)
|
||||
bones/71/scale = Vector3(0.9999999, 1, 0.9999999)
|
||||
bones/72/rotation = Quaternion(-2.1641608e-07, -4.6565607e-10, -4.6576065e-10, 1)
|
||||
bones/75/rotation = Quaternion(-0.34314692, -0.20321459, -0.2785586, 0.8737043)
|
||||
bones/76/position = Vector3(1.01587794e-07, -1.5306958e-07, -4.3554866e-07)
|
||||
bones/76/rotation = Quaternion(-0.51764834, -7.167482e-08, 1.7163823e-07, 0.85559356)
|
||||
bones/77/rotation = Quaternion(0.93367195, 1.2110854e-07, 3.8556042e-08, 0.35812962)
|
||||
bones/78/position = Vector3(0.8199172, 0.25251257, 0.47214243)
|
||||
bones/78/rotation = Quaternion(0.6979164, 0.16086517, -0.15598962, 0.6802223)
|
||||
bones/78/scale = Vector3(1.0000004, 0.9999997, 0.99999905)
|
||||
bones/80/rotation = Quaternion(0.7179022, -7.6713064e-07, 7.885641e-07, 0.696144)
|
||||
bones/80/scale = Vector3(1.0000004, 0.9999986, 0.99999994)
|
||||
bones/81/rotation = Quaternion(0.97764814, 1.9846473e-07, 1.0426893e-06, -0.21024783)
|
||||
bones/81/scale = Vector3(1.0000004, 1.0000002, 0.9999982)
|
||||
bones/82/position = Vector3(6.103571e-08, 8.8816435e-08, -3.6955274e-09)
|
||||
bones/82/rotation = Quaternion(-0.8315211, 2.3407136e-08, -1.2821512e-08, 0.5554932)
|
||||
bones/82/scale = Vector3(0.99999994, 0.99999994, 1)
|
||||
bones/83/rotation = Quaternion(0.6775009, -8.600083e-08, -8.977273e-08, 0.735522)
|
||||
bones/83/scale = Vector3(1, 1.0000001, 1)
|
||||
bones/84/scale = Vector3(0.99999994, 1.0000001, 0.9999999)
|
||||
bones/85/rotation = Quaternion(2.6833732e-07, -9.313788e-10, -2.5612494e-09, 1)
|
||||
bones/85/scale = Vector3(1.0000001, 1, 1.0000001)
|
||||
bones/87/rotation = Quaternion(-0.5230753, 0.20132942, 0.026226493, 0.8277505)
|
||||
bones/88/rotation = Quaternion(0.61967987, 0.23118778, 0.3169036, 0.679795)
|
||||
bones/89/position = Vector3(2.953037e-07, 4.9207458e-08, -4.3015167e-08)
|
||||
bones/89/rotation = Quaternion(-0.001144886, -2.973514e-08, 2.817069e-08, 0.9999994)
|
||||
bones/90/rotation = Quaternion(0.0023764072, -4.0769752e-08, -7.0690255e-08, 0.99999726)
|
||||
bones/91/position = Vector3(-0.8199192, 0.2525128, 0.47213912)
|
||||
bones/91/rotation = Quaternion(-0.49266297, -0.27058598, 0.2623832, 0.78436047)
|
||||
bones/91/scale = Vector3(1.0000002, 0.999999, 0.99999964)
|
||||
bones/96/position = Vector3(-0.021971898, -1.2751104, 0.16484088)
|
||||
bones/96/rotation = Quaternion(-0.47603267, 0.067788206, -0.035077166, 0.8761091)
|
||||
bones/96/scale = Vector3(0.9999999, 0.9999999, 0.99999976)
|
||||
bones/97/rotation = Quaternion(0.997074, -1.2813135e-07, 1.666339e-06, -0.07644201)
|
||||
bones/98/position = Vector3(0.01993539, 0.08757691, 0.045667563)
|
||||
bones/98/rotation = Quaternion(0.1475291, 0.03397043, -0.019923227, 0.9882734)
|
||||
bones/98/scale = Vector3(1, 1.0000011, 1.0000023)
|
||||
bones/101/position = Vector3(-0.021972047, 0.8282039, 0.0959422)
|
||||
bones/101/rotation = Quaternion(0.8371564, 0.04015539, 0.06490996, 0.5416119)
|
||||
bones/101/scale = Vector3(1, 1.0000066, 0.99998474)
|
||||
bones/102/rotation = Quaternion(0.95545256, -6.924111e-08, 2.2887033e-07, -0.29514462)
|
||||
bones/103/position = Vector3(0.17285576, 0.72785676, 1.0822707)
|
||||
bones/103/rotation = Quaternion(0.27801546, 0.0014157619, 0.015671493, 0.9604477)
|
||||
bones/103/scale = Vector3(1.0000002, 1.000013, 1.0000246)
|
||||
bones/104/rotation = Quaternion(0.5037003, 0.13519715, -0.093790196, 0.84806323)
|
||||
bones/104/scale = Vector3(1.0000721, 1.0000457, 0.99993384)
|
||||
bones/105/rotation = Quaternion(0.97757924, -0.053521663, -0.054415643, -0.19624804)
|
||||
bones/105/scale = Vector3(1.0000001, 1.0000083, 1.0000036)
|
||||
bones/106/position = Vector3(0.023142539, -0.54231995, -0.9607401)
|
||||
bones/106/rotation = Quaternion(0.99272084, -0.08158898, -0.03307842, -0.08218607)
|
||||
bones/107/rotation = Quaternion(0.903578, -0.12777254, -0.05477002, -0.4052421)
|
||||
bones/107/scale = Vector3(0.9999992, 0.9999624, 1.0000123)
|
||||
bones/108/position = Vector3(-1.1340098e-08, 7.923448e-07, 9.0939814e-08)
|
||||
bones/108/rotation = Quaternion(0.98967296, 0.0031370325, 0.10343237, -0.09919364)
|
||||
bones/110/rotation = Quaternion(9.815354e-07, 7.072085e-10, -9.586452e-08, 1)
|
||||
bones/110/scale = Vector3(0.99999994, 0.99999976, 1.0000001)
|
||||
bones/113/position = Vector3(0.07716276, 0.6410925, 0.71644557)
|
||||
bones/113/rotation = Quaternion(0.75079244, 0.54212654, -0.3715475, 0.0660462)
|
||||
bones/114/position = Vector3(-0.031743176, 0.60466695, -0.39704067)
|
||||
bones/114/rotation = Quaternion(0.4176498, -0.11118397, 0.55639553, -0.70966953)
|
||||
bones/114/scale = Vector3(1.0000015, 1.0000038, 1.0000079)
|
||||
bones/115/rotation = Quaternion(-0.07547326, 0.02173067, -0.31477332, 0.945912)
|
||||
bones/115/scale = Vector3(0.9999974, 1.0000036, 0.99999976)
|
||||
bones/116/rotation = Quaternion(0.03028559, -0.3116764, -0.037417784, 0.9489682)
|
||||
bones/116/scale = Vector3(1.0000005, 0.9999972, 1.0000013)
|
||||
bones/119/scale = Vector3(1.0000043, 0.9999975, 0.99999744)
|
||||
bones/121/rotation = Quaternion(-4.820391e-08, -0.1579088, -2.0880496e-08, 0.98745376)
|
||||
bones/121/scale = Vector3(1.0000037, 0.99999774, 0.9999977)
|
||||
bones/123/scale = Vector3(1.000003, 0.9999977, 0.99999917)
|
||||
bones/124/rotation = Quaternion(-3.1036683e-07, 0.17317644, 6.989145e-08, 0.9848908)
|
||||
bones/124/scale = Vector3(1.0000037, 0.9999978, 0.99999875)
|
||||
bones/126/rotation = Quaternion(-0.5163543, -0.16816929, 0.6340875, 0.550482)
|
||||
bones/126/scale = Vector3(1.0000015, 1.000007, 1.000004)
|
||||
bones/127/rotation = Quaternion(-0.24332331, 0.12663932, 0.6612194, 0.6982444)
|
||||
bones/127/scale = Vector3(1.0000017, 1.0000014, 1.0000097)
|
||||
bones/128/position = Vector3(-0.008928956, 0.128764, -0.06877987)
|
||||
bones/128/rotation = Quaternion(0.025037244, 0.39930493, -0.88358396, 0.24332726)
|
||||
bones/129/rotation = Quaternion(-0.07547334, 0.021730714, -0.31477335, 0.94591194)
|
||||
bones/131/rotation = Quaternion(-0.41802245, -0.28161782, 0.08442414, 0.85954714)
|
||||
bones/132/rotation = Quaternion(-0.5281791, -0.34319904, -0.62196887, -0.46518382)
|
||||
bones/133/rotation = Quaternion(-0.012777329, 0.011854946, 0.00015161165, 0.9998482)
|
||||
bones/133/scale = Vector3(1.0423008, 1.0423008, 1.0423006)
|
||||
bones/134/rotation = Quaternion(0.02152103, -3.688601e-08, -1.5255387e-07, 0.99976844)
|
||||
bones/134/scale = Vector3(0.9882629, 0.9882634, 0.98826265)
|
||||
bones/135/position = Vector3(-0.0317431, 0.60466677, -0.39704087)
|
||||
bones/135/rotation = Quaternion(0.22344373, -0.32689255, 0.658746, -0.6397405)
|
||||
bones/135/scale = Vector3(1.0000048, 1.0000036, 1.0000046)
|
||||
bones/137/position = Vector3(-0.33244255, 0.70370555, 0.67530614)
|
||||
bones/137/rotation = Quaternion(0.7519437, -0.5788053, 0.30500948, 0.08083551)
|
||||
bones/138/position = Vector3(-0.19594865, 0.65740275, -0.22511396)
|
||||
bones/138/rotation = Quaternion(0.36201134, 0.22157827, -0.6475769, -0.63284683)
|
||||
bones/138/scale = Vector3(1.0000019, 1.0000045, 1.0000057)
|
||||
bones/139/rotation = Quaternion(-0.018797327, 0.13857716, 0.33871746, 0.9304373)
|
||||
bones/139/scale = Vector3(0.9999983, 1.0000024, 0.9999992)
|
||||
bones/140/rotation = Quaternion(0.09896898, 0.1986053, -0.00787212, 0.975038)
|
||||
bones/140/scale = Vector3(1.0000031, 0.9999977, 0.9999988)
|
||||
bones/143/scale = Vector3(1.000005, 0.99999815, 0.9999967)
|
||||
bones/145/rotation = Quaternion(-1.7910523e-07, 0.10005118, -9.714451e-08, 0.9949823)
|
||||
bones/145/scale = Vector3(1.0000045, 0.99999803, 0.9999968)
|
||||
bones/147/scale = Vector3(1.0000035, 0.99999845, 0.9999981)
|
||||
bones/148/rotation = Quaternion(2.0844507e-07, 0.011625211, 4.5709146e-07, 0.9999325)
|
||||
bones/148/scale = Vector3(1.000004, 0.9999991, 0.999998)
|
||||
bones/150/rotation = Quaternion(-0.51635444, 0.16816957, -0.63408744, 0.55048186)
|
||||
bones/150/scale = Vector3(1.000001, 1.0000067, 1.000004)
|
||||
bones/151/rotation = Quaternion(-0.24332346, -0.12663896, -0.6612195, 0.6982443)
|
||||
bones/151/scale = Vector3(1.0000011, 1.0000017, 1.0000095)
|
||||
bones/152/position = Vector3(0.027921734, -0.124764316, 0.07102555)
|
||||
bones/152/rotation = Quaternion(-0.12973516, 0.47151387, -0.86254627, -0.12983702)
|
||||
bones/153/rotation = Quaternion(-0.018797398, 0.13857722, 0.33871746, 0.9304373)
|
||||
bones/155/rotation = Quaternion(-0.36541468, 0.16190512, -0.07102372, 0.91390073)
|
||||
bones/155/scale = Vector3(0.99999994, 1, 0.9999998)
|
||||
bones/156/rotation = Quaternion(0.68045896, -0.19169958, -0.3896983, 0.59022206)
|
||||
bones/157/rotation = Quaternion(-0.01277751, -0.011854968, -0.0001513001, 0.9998481)
|
||||
bones/157/scale = Vector3(1.0423003, 1.0422994, 1.0423005)
|
||||
bones/158/rotation = Quaternion(0.021521209, -2.5687226e-07, -2.570953e-07, 0.9997684)
|
||||
bones/158/scale = Vector3(0.9882631, 0.98826426, 0.9882618)
|
||||
bones/159/position = Vector3(-0.19594839, 0.65740275, -0.2251139)
|
||||
bones/159/rotation = Quaternion(0.28422734, 0.29369113, -0.68527013, -0.60279787)
|
||||
bones/159/scale = Vector3(1.0000027, 1.0000043, 1.0000049)
|
||||
bones/161/position = Vector3(0.07716276, 0.6410925, 0.71644557)
|
||||
bones/161/rotation = Quaternion(0.75079244, 0.54212654, -0.3715475, 0.0660462)
|
||||
bones/162/position = Vector3(-0.33244255, 0.70370555, 0.67530614)
|
||||
bones/162/rotation = Quaternion(0.7519437, -0.5788053, 0.30500948, 0.08083551)
|
||||
bones/165/position = Vector3(-1.5017577e-08, 0.26895812, -1.6243575e-08)
|
||||
bones/165/rotation = Quaternion(-0.019247467, -0.20323175, 0.97894067, -0.0012537595)
|
||||
bones/166/position = Vector3(0.0034187725, -3.131728, 0.9674823)
|
||||
bones/167/position = Vector3(0.209171, 5.0901713, -2.6670303)
|
||||
bones/167/rotation = Quaternion(0.16656846, 0.015223213, 0.18356222, 0.9686734)
|
||||
bones/167/scale = Vector3(0.9999988, 0.9999987, 1.0000023)
|
||||
bones/168/position = Vector3(0.18381567, -0.9622623, 0.9894084)
|
||||
bones/168/rotation = Quaternion(0.9362244, -6.2652596e-08, -0.34127164, -0.083770975)
|
||||
bones/168/scale = Vector3(1.0000011, 1.0000015, 1.0000101)
|
||||
bones/170/position = Vector3(0.748137, 0.69556385, 3.7252903e-09)
|
||||
bones/170/rotation = Quaternion(0.019250846, -0.20323181, 0.9789406, 0.001253055)
|
||||
bones/171/position = Vector3(0.6322718, -2.6572587, 0.6064028)
|
||||
bones/172/position = Vector3(-1.5122895, 4.4686184, -2.7014794)
|
||||
bones/172/rotation = Quaternion(0.21553025, -0.03620148, 0.11066054, 0.9695311)
|
||||
bones/172/scale = Vector3(0.99999887, 0.9999985, 1.0000024)
|
||||
bones/173/position = Vector3(0.18381546, -0.96226203, 0.9894083)
|
||||
bones/173/rotation = Quaternion(0.93622434, -2.9748788e-08, 0.34127158, -0.083771475)
|
||||
bones/173/scale = Vector3(0.999999, 1.0000014, 0.99999464)
|
||||
bones/175/position = Vector3(0.2542465, -2.2077389, 0.9589075)
|
||||
bones/175/rotation = Quaternion(-0.008919476, -0.00021326332, -0.000697989, 0.99996)
|
||||
bones/183/position = Vector3(-1.982537e-07, 5.9604563e-08, -1.517833e-08)
|
||||
bones/185/rotation = Quaternion(5.4077844e-07, -0.20349081, 0.97907686, -1.12395135e-07)
|
||||
bones/186/position = Vector3(0.57634556, 3.7607954, 0.15364014)
|
||||
bones/186/rotation = Quaternion(-0.9604305, -0.020206233, -0.08076539, -0.26578543)
|
||||
bones/186/scale = Vector3(0.9999997, 0.99999994, 1)
|
||||
bones/187/rotation = Quaternion(0.15451065, -2.0305349e-09, -2.0850066e-09, 0.9879911)
|
||||
bones/187/scale = Vector3(1.0000002, 0.99999994, 0.9999999)
|
||||
bones/197/position = Vector3(-0.0011225368, -0.015787723, -0.051779967)
|
||||
bones/199/rotation = Quaternion(0.00034800146, -0.20349097, 0.9790768, -7.2328476e-05)
|
||||
bones/200/position = Vector3(-1.0407574, 3.6267605, -0.083099455)
|
||||
bones/200/rotation = Quaternion(-0.9604305, -0.020206233, -0.08076539, -0.26578543)
|
||||
bones/200/scale = Vector3(0.9999997, 0.99999994, 1)
|
||||
bones/201/rotation = Quaternion(0.15451066, -1.9585848e-09, -2.5450761e-09, 0.9879911)
|
||||
bones/201/scale = Vector3(1.0000002, 0.99999994, 0.99999994)
|
||||
|
||||
[editable path="bear_model"]
|
||||
[editable path="bear_model/test_cube/Bear_FX"]
|
||||
@@ -0,0 +1,319 @@
|
||||
[gd_scene format=3 uid="uid://o8ocjfprxa7u"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cn7fhjkro7637" path="res://bear.gd" id="1_beargd"]
|
||||
[ext_resource type="PackedScene" uid="uid://cofv5dbavesis" path="res://Assets/Bear.glb" id="2_bearglb"]
|
||||
[ext_resource type="Script" uid="uid://bsbed05ifr18s" path="res://bear_test_cube.gd" id="3_rog1v"]
|
||||
[ext_resource type="PackedScene" uid="uid://bdbx0wwa73rhp" path="res://Assets/fx/Bear_FX.glb" id="4_rog1v"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_body"]
|
||||
radius = 1.0
|
||||
height = 2.4
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_hit"]
|
||||
radius = 1.3
|
||||
height = 2.7
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_bfebr"]
|
||||
size = Vector3(6.2019043, 8.561401, 7.0739746)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_rog1v"]
|
||||
size = Vector3(14.399288, 51.902206, 5.741211)
|
||||
|
||||
[node name="Bear" type="CharacterBody3D" unique_id=1573237287]
|
||||
script = ExtResource("1_beargd")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=830443382]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2, 0)
|
||||
shape = SubResource("CapsuleShape3D_body")
|
||||
|
||||
[node name="HitArea" type="Area3D" parent="." unique_id=365327397]
|
||||
monitorable = false
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="HitArea" unique_id=2111867348]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.35, 0)
|
||||
shape = SubResource("CapsuleShape3D_hit")
|
||||
|
||||
[node name="bear_model" parent="." unique_id=359217823 instance=ExtResource("2_bearglb")]
|
||||
|
||||
[node name="test_cube" type="Node3D" parent="bear_model" unique_id=646988893]
|
||||
script = ExtResource("3_rog1v")
|
||||
|
||||
[node name="Bear_FX" parent="bear_model/test_cube" unique_id=1183391245 instance=ExtResource("4_rog1v")]
|
||||
|
||||
[node name="Bear_fx_jump_smash" parent="bear_model/test_cube/Bear_FX" index="0" unique_id=750478984]
|
||||
visible = false
|
||||
|
||||
[node name="Bear_fx_claw_attack_R" parent="bear_model/test_cube/Bear_FX" index="1" unique_id=88064381]
|
||||
visible = false
|
||||
|
||||
[node name="Bear_fx_claw_attack_L" parent="bear_model/test_cube/Bear_FX" index="2" unique_id=1378755061]
|
||||
visible = false
|
||||
|
||||
[node name="Bear_fx_smash_hit" parent="bear_model/test_cube/Bear_FX" index="3" unique_id=1711579105]
|
||||
transform = Transform3D(0.55488384, -0.039024748, -0.018949924, 0.041069064, 0.55086076, 0.06814586, 0.013977209, -0.06933683, 0.5520644, 1.327292, -0.21312934, 5.190573)
|
||||
|
||||
[node name="RigidBody3D" type="AnimatableBody3D" parent="bear_model/test_cube/Bear_FX/Bear_fx_smash_hit" index="0" unique_id=1764208051]
|
||||
transform = Transform3D(1.0000001, -1.21071935e-08, -1.8626451e-08, -9.313226e-10, 0.99999994, 7.450581e-09, 3.7252903e-09, -1.4901161e-08, 0.99999994, 0, 0, 0)
|
||||
collision_layer = 8
|
||||
collision_mask = 2
|
||||
|
||||
[node name="CollisionShape3D2" type="CollisionShape3D" parent="bear_model/test_cube/Bear_FX/Bear_fx_smash_hit/RigidBody3D" unique_id=1779197150]
|
||||
transform = Transform3D(0.99993557, -0.00749125, -0.010078691, 0.0077760145, 0.999569, 0.028562747, 0.009858355, -0.028639637, 0.9995405, -1.5136471, 0.9093375, 35.591957)
|
||||
shape = SubResource("BoxShape3D_bfebr")
|
||||
disabled = true
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="bear_model/test_cube/Bear_FX/Bear_fx_smash_hit/RigidBody3D" unique_id=1276552823]
|
||||
transform = Transform3D(0.9935104, -0.040698394, -0.10621016, -0.108634494, -0.06290151, -0.9920882, 0.03369555, 0.99719334, -0.06691426, -1.6357545, -0.5093044, 12.68803)
|
||||
shape = SubResource("BoxShape3D_rog1v")
|
||||
|
||||
[node name="Skeleton3D" parent="bear_model/bear-rig" parent_id_path=PackedInt32Array(359217823, 1017999212) index="0" unique_id=1624609914]
|
||||
bones/1/position = Vector3(0.00851878, 0.24701798, 1.2888045)
|
||||
bones/1/rotation = Quaternion(0.29791054, -0.060797628, -0.056875575, 0.9509564)
|
||||
bones/2/rotation = Quaternion(0.084239505, -0.026013458, 0.009274505, 0.9960628)
|
||||
bones/2/scale = Vector3(0.9999999, 1.0000008, 0.99999934)
|
||||
bones/3/rotation = Quaternion(-0.14812404, -0.039577905, 0.049865585, 0.98691756)
|
||||
bones/4/rotation = Quaternion(-0.40577498, -0.03082885, 0.05040324, 0.9120612)
|
||||
bones/5/rotation = Quaternion(0.27801633, 0.0014148077, 0.015671793, 0.96044755)
|
||||
bones/6/rotation = Quaternion(0.50370073, 0.13519946, -0.093789615, 0.8480627)
|
||||
bones/7/rotation = Quaternion(0.75079185, 0.54212743, -0.37154716, 0.06604591)
|
||||
bones/8/rotation = Quaternion(0.22344273, -0.32689556, 0.65874565, -0.63973963)
|
||||
bones/9/rotation = Quaternion(0.026405705, -0.27415153, -0.3226086, 0.9055757)
|
||||
bones/10/rotation = Quaternion(0.030285481, -0.31167626, -0.037417818, 0.94896823)
|
||||
bones/11/rotation = Quaternion(0.751943, -0.5788067, 0.30500817, 0.080837056)
|
||||
bones/12/rotation = Quaternion(0.28422552, 0.2936944, -0.68526876, -0.6027987)
|
||||
bones/13/rotation = Quaternion(0.020711409, 0.24585825, 0.3386082, 0.9080029)
|
||||
bones/14/rotation = Quaternion(0.098969, 0.19860524, -0.007872087, 0.97503805)
|
||||
bones/15/rotation = Quaternion(0.6979166, 0.16086513, -0.15598965, 0.680222)
|
||||
bones/16/rotation = Quaternion(0.89734674, 0.09874082, -0.25790086, 0.34424722)
|
||||
bones/17/rotation = Quaternion(-0.13802421, 0.26758972, 0.081159085, 0.9501359)
|
||||
bones/17/scale = Vector3(0.9999998, 1.0000002, 1)
|
||||
bones/19/rotation = Quaternion(-4.514978e-15, 1, 7.4505806e-08, -5.523351e-07)
|
||||
bones/20/rotation = Quaternion(-0.49266306, -0.27058616, 0.262383, 0.7843606)
|
||||
bones/21/rotation = Quaternion(0.0016915401, 0.70246154, -0.001669446, 0.7117178)
|
||||
bones/22/rotation = Quaternion(-0.5496364, -0.3220462, -0.22350304, 0.73772115)
|
||||
bones/22/scale = Vector3(0.9999997, 0.9999998, 0.9999999)
|
||||
bones/23/rotation = Quaternion(-0.00015351747, 0.902104, -0.4315187, 0.00032039074)
|
||||
bones/24/rotation = Quaternion(6.628114e-12, 0.99999994, 5.2154085e-08, -0.00035543842)
|
||||
bones/25/position = Vector3(1.0191536, 3.5353048, 3.5049686)
|
||||
bones/25/rotation = Quaternion(-0.087474234, 0.16733547, 0.98056763, 0.053239316)
|
||||
bones/25/scale = Vector3(1, 17.518272, 1.0000001)
|
||||
bones/26/position = Vector3(-1.0831825, 3.749937, 2.5891113)
|
||||
bones/26/rotation = Quaternion(0.016340872, 0.19671263, 0.9801456, 0.01875816)
|
||||
bones/26/scale = Vector3(1.0000001, 18.765795, 1)
|
||||
bones/27/position = Vector3(1.0193456, -0.43209565, 2.5343885)
|
||||
bones/27/rotation = Quaternion(0.61800283, -0.11976056, 0.11976072, 0.7677157)
|
||||
bones/27/scale = Vector3(0.99999994, 16.85072, 1)
|
||||
bones/28/position = Vector3(-0.8340287, 1.0348616, 1.282705)
|
||||
bones/28/rotation = Quaternion(0.82860446, -0.029359974, 0.02935981, 0.5582926)
|
||||
bones/28/scale = Vector3(0.99999994, 32.068844, 1)
|
||||
bones/30/position = Vector3(0.032563455, -0.8335703, -0.9236449)
|
||||
bones/30/rotation = Quaternion(-0.8670657, 0.042821795, -0.07139772, 0.4911883)
|
||||
bones/31/position = Vector3(2.3450447e-08, -1.4631646, 0.23291242)
|
||||
bones/31/rotation = Quaternion(-6.0737464e-09, 4.8699293e-09, -1.4618977e-09, 1)
|
||||
bones/31/scale = Vector3(0.99999994, 0.9999999, 0.99999994)
|
||||
bones/32/position = Vector3(-0.04394375, -1.087056, 0.096768975)
|
||||
bones/32/rotation = Quaternion(-0.8343034, 0.119118, -0.061490715, 0.5347595)
|
||||
bones/32/scale = Vector3(0.9999999, 0.99999976, 0.99999964)
|
||||
bones/33/position = Vector3(3.977649e-08, -1.4631644, 0.23291251)
|
||||
bones/33/rotation = Quaternion(-8.833673e-08, -2.419923e-08, -6.733043e-09, 1)
|
||||
bones/33/scale = Vector3(0.9999998, 0.9999998, 0.99999994)
|
||||
bones/35/position = Vector3(1.0184407e-08, -1.0594703, -5.9146995e-08)
|
||||
bones/35/rotation = Quaternion(0.99971783, 1.3593646e-07, 5.3695976e-06, -0.023754615)
|
||||
bones/35/scale = Vector3(0.99999976, 0.9999998, 1.0000012)
|
||||
bones/39/position = Vector3(0.8199172, 0.25251278, 0.47214246)
|
||||
bones/39/rotation = Quaternion(0.71402234, 0.34199142, 0.043267474, 0.60937834)
|
||||
bones/39/scale = Vector3(1.0000004, 0.9999996, 0.9999991)
|
||||
bones/40/rotation = Quaternion(0.9336719, 1.2799235e-07, 3.7337827e-08, 0.3581296)
|
||||
bones/40/scale = Vector3(1.0000004, 1.0000001, 1.0000001)
|
||||
bones/41/rotation = Quaternion(-0.13802455, 0.26758966, 0.08115916, 0.9501359)
|
||||
bones/41/scale = Vector3(0.99999946, 0.99999976, 0.9999996)
|
||||
bones/42/position = Vector3(-1.9729964e-07, 0.56145483, 7.283501e-08)
|
||||
bones/46/scale = Vector3(0.99999946, 0.99999964, 0.9999999)
|
||||
bones/48/rotation = Quaternion(-2.9741386e-07, 0.13593404, 1.01778824e-07, 0.9907179)
|
||||
bones/48/scale = Vector3(0.9999993, 0.9999996, 0.9999999)
|
||||
bones/50/scale = Vector3(0.99999994, 0.99999994, 0.9999998)
|
||||
bones/51/rotation = Quaternion(-2.5567479e-08, -0.20499781, -2.3086146e-08, 0.9787625)
|
||||
bones/51/scale = Vector3(0.9999999, 0.99999964, 0.99999964)
|
||||
bones/53/position = Vector3(-0.8199191, 0.25251284, 0.47213903)
|
||||
bones/53/rotation = Quaternion(-0.5351706, 0.35860845, -0.15898216, 0.74814254)
|
||||
bones/53/scale = Vector3(1, 0.99999875, 0.99999946)
|
||||
bones/54/rotation = Quaternion(0.0023762286, -4.7362324e-08, -6.475868e-08, 0.9999972)
|
||||
bones/55/rotation = Quaternion(-0.54963607, -0.322046, -0.22350314, 0.73772144)
|
||||
bones/55/scale = Vector3(1.0000002, 1, 1.0000002)
|
||||
bones/56/position = Vector3(0.0013532753, 0.57868266, 0.05537574)
|
||||
bones/56/rotation = Quaternion(-0.00015348212, 0.90210384, -0.43151882, 0.0003204293)
|
||||
bones/57/rotation = Quaternion(0.70073944, -0.70073956, -0.094679825, -0.09467953)
|
||||
bones/60/scale = Vector3(1.0000004, 1.0000004, 1.0000002)
|
||||
bones/62/rotation = Quaternion(-1.7092354e-08, -0.18223058, 2.6700846e-08, 0.98325586)
|
||||
bones/62/scale = Vector3(1.0000002, 1.0000002, 1.0000001)
|
||||
bones/64/scale = Vector3(1.0000004, 1.0000004, 1)
|
||||
bones/65/rotation = Quaternion(-1.0345744e-08, -0.3796584, -4.0675246e-08, 0.9251268)
|
||||
bones/65/scale = Vector3(1.0000002, 1.0000004, 1.0000004)
|
||||
bones/67/rotation = Quaternion(0.7179022, -7.671307e-07, 7.885642e-07, 0.696144)
|
||||
bones/67/scale = Vector3(1.0000004, 0.9999986, 0.99999994)
|
||||
bones/68/rotation = Quaternion(0.9776482, 2.0029378e-07, 1.0460874e-06, -0.2102479)
|
||||
bones/68/scale = Vector3(1.0000004, 1.0000004, 0.9999982)
|
||||
bones/69/position = Vector3(-2.4645832e-08, -6.861796e-09, 7.455772e-08)
|
||||
bones/69/rotation = Quaternion(-0.8315212, 2.5276703e-08, -9.3330055e-09, 0.5554931)
|
||||
bones/69/scale = Vector3(1, 1.0000001, 1.0000002)
|
||||
bones/70/rotation = Quaternion(0.67750055, 8.820757e-08, 7.575834e-08, 0.7355223)
|
||||
bones/70/scale = Vector3(1, 1, 1)
|
||||
bones/71/scale = Vector3(0.9999999, 1, 0.9999999)
|
||||
bones/72/rotation = Quaternion(-2.1641608e-07, -4.6565607e-10, -4.6576065e-10, 1)
|
||||
bones/75/rotation = Quaternion(-0.34314692, -0.20321459, -0.2785586, 0.8737043)
|
||||
bones/76/position = Vector3(1.01587794e-07, -1.5306958e-07, -4.3554866e-07)
|
||||
bones/76/rotation = Quaternion(-0.51764834, -7.167482e-08, 1.7163823e-07, 0.85559356)
|
||||
bones/77/rotation = Quaternion(0.93367195, 1.2110854e-07, 3.8556042e-08, 0.35812962)
|
||||
bones/78/position = Vector3(0.8199172, 0.25251257, 0.47214243)
|
||||
bones/78/rotation = Quaternion(0.6979164, 0.16086517, -0.15598962, 0.6802223)
|
||||
bones/78/scale = Vector3(1.0000004, 0.9999997, 0.99999905)
|
||||
bones/80/rotation = Quaternion(0.7179022, -7.6713064e-07, 7.885641e-07, 0.696144)
|
||||
bones/80/scale = Vector3(1.0000004, 0.9999986, 0.99999994)
|
||||
bones/81/rotation = Quaternion(0.97764814, 1.9846473e-07, 1.0426893e-06, -0.21024783)
|
||||
bones/81/scale = Vector3(1.0000004, 1.0000002, 0.9999982)
|
||||
bones/82/position = Vector3(6.103571e-08, 8.8816435e-08, -3.6955274e-09)
|
||||
bones/82/rotation = Quaternion(-0.8315211, 2.3407136e-08, -1.2821512e-08, 0.5554932)
|
||||
bones/82/scale = Vector3(0.99999994, 0.99999994, 1)
|
||||
bones/83/rotation = Quaternion(0.6775009, -8.600083e-08, -8.977273e-08, 0.735522)
|
||||
bones/83/scale = Vector3(1, 1.0000001, 1)
|
||||
bones/84/scale = Vector3(0.99999994, 1.0000001, 0.9999999)
|
||||
bones/85/rotation = Quaternion(2.6833732e-07, -9.313788e-10, -2.5612494e-09, 1)
|
||||
bones/85/scale = Vector3(1.0000001, 1, 1.0000001)
|
||||
bones/87/rotation = Quaternion(-0.5230753, 0.20132942, 0.026226493, 0.8277505)
|
||||
bones/88/rotation = Quaternion(0.61967987, 0.23118778, 0.3169036, 0.679795)
|
||||
bones/89/position = Vector3(2.953037e-07, 4.9207458e-08, -4.3015167e-08)
|
||||
bones/89/rotation = Quaternion(-0.001144886, -2.973514e-08, 2.817069e-08, 0.9999994)
|
||||
bones/90/rotation = Quaternion(0.0023764072, -4.0769752e-08, -7.0690255e-08, 0.99999726)
|
||||
bones/91/position = Vector3(-0.8199192, 0.2525128, 0.47213912)
|
||||
bones/91/rotation = Quaternion(-0.49266297, -0.27058598, 0.2623832, 0.78436047)
|
||||
bones/91/scale = Vector3(1.0000002, 0.999999, 0.99999964)
|
||||
bones/96/position = Vector3(-0.021971898, -1.2751104, 0.16484088)
|
||||
bones/96/rotation = Quaternion(-0.47603267, 0.067788206, -0.035077166, 0.8761091)
|
||||
bones/96/scale = Vector3(0.9999999, 0.9999999, 0.99999976)
|
||||
bones/97/rotation = Quaternion(0.997074, -1.2813135e-07, 1.666339e-06, -0.07644201)
|
||||
bones/98/position = Vector3(0.01993539, 0.08757691, 0.045667563)
|
||||
bones/98/rotation = Quaternion(0.1475291, 0.03397043, -0.019923227, 0.9882734)
|
||||
bones/98/scale = Vector3(1, 1.0000011, 1.0000023)
|
||||
bones/101/position = Vector3(-0.021972047, 0.8282039, 0.0959422)
|
||||
bones/101/rotation = Quaternion(0.8371564, 0.04015539, 0.06490996, 0.5416119)
|
||||
bones/101/scale = Vector3(1, 1.0000066, 0.99998474)
|
||||
bones/102/rotation = Quaternion(0.95545256, -6.924111e-08, 2.2887033e-07, -0.29514462)
|
||||
bones/103/position = Vector3(0.17285576, 0.72785676, 1.0822707)
|
||||
bones/103/rotation = Quaternion(0.27801546, 0.0014157619, 0.015671493, 0.9604477)
|
||||
bones/103/scale = Vector3(1.0000002, 1.000013, 1.0000246)
|
||||
bones/104/rotation = Quaternion(0.5037003, 0.13519715, -0.093790196, 0.84806323)
|
||||
bones/104/scale = Vector3(1.0000721, 1.0000457, 0.99993384)
|
||||
bones/105/rotation = Quaternion(0.97757924, -0.053521663, -0.054415643, -0.19624804)
|
||||
bones/105/scale = Vector3(1.0000001, 1.0000083, 1.0000036)
|
||||
bones/106/position = Vector3(0.023142539, -0.54231995, -0.9607401)
|
||||
bones/106/rotation = Quaternion(0.99272084, -0.08158898, -0.03307842, -0.08218607)
|
||||
bones/107/rotation = Quaternion(0.903578, -0.12777254, -0.05477002, -0.4052421)
|
||||
bones/107/scale = Vector3(0.9999992, 0.9999624, 1.0000123)
|
||||
bones/108/position = Vector3(-1.1340098e-08, 7.923448e-07, 9.0939814e-08)
|
||||
bones/108/rotation = Quaternion(0.98967296, 0.0031370325, 0.10343237, -0.09919364)
|
||||
bones/110/rotation = Quaternion(9.815354e-07, 7.072085e-10, -9.586452e-08, 1)
|
||||
bones/110/scale = Vector3(0.99999994, 0.99999976, 1.0000001)
|
||||
bones/113/position = Vector3(0.07716276, 0.6410925, 0.71644557)
|
||||
bones/113/rotation = Quaternion(0.75079244, 0.54212654, -0.3715475, 0.0660462)
|
||||
bones/114/position = Vector3(-0.031743176, 0.60466695, -0.39704067)
|
||||
bones/114/rotation = Quaternion(0.4176498, -0.11118397, 0.55639553, -0.70966953)
|
||||
bones/114/scale = Vector3(1.0000015, 1.0000038, 1.0000079)
|
||||
bones/115/rotation = Quaternion(-0.07547326, 0.02173067, -0.31477332, 0.945912)
|
||||
bones/115/scale = Vector3(0.9999974, 1.0000036, 0.99999976)
|
||||
bones/116/rotation = Quaternion(0.03028559, -0.3116764, -0.037417784, 0.9489682)
|
||||
bones/116/scale = Vector3(1.0000005, 0.9999972, 1.0000013)
|
||||
bones/119/scale = Vector3(1.0000043, 0.9999975, 0.99999744)
|
||||
bones/121/rotation = Quaternion(-4.820391e-08, -0.1579088, -2.0880496e-08, 0.98745376)
|
||||
bones/121/scale = Vector3(1.0000037, 0.99999774, 0.9999977)
|
||||
bones/123/scale = Vector3(1.000003, 0.9999977, 0.99999917)
|
||||
bones/124/rotation = Quaternion(-3.1036683e-07, 0.17317644, 6.989145e-08, 0.9848908)
|
||||
bones/124/scale = Vector3(1.0000037, 0.9999978, 0.99999875)
|
||||
bones/126/rotation = Quaternion(-0.5163543, -0.16816929, 0.6340875, 0.550482)
|
||||
bones/126/scale = Vector3(1.0000015, 1.000007, 1.000004)
|
||||
bones/127/rotation = Quaternion(-0.24332331, 0.12663932, 0.6612194, 0.6982444)
|
||||
bones/127/scale = Vector3(1.0000017, 1.0000014, 1.0000097)
|
||||
bones/128/position = Vector3(-0.008928956, 0.128764, -0.06877987)
|
||||
bones/128/rotation = Quaternion(0.025037244, 0.39930493, -0.88358396, 0.24332726)
|
||||
bones/129/rotation = Quaternion(-0.07547334, 0.021730714, -0.31477335, 0.94591194)
|
||||
bones/131/rotation = Quaternion(-0.41802245, -0.28161782, 0.08442414, 0.85954714)
|
||||
bones/132/rotation = Quaternion(-0.5281791, -0.34319904, -0.62196887, -0.46518382)
|
||||
bones/133/rotation = Quaternion(-0.012777329, 0.011854946, 0.00015161165, 0.9998482)
|
||||
bones/133/scale = Vector3(1.0423008, 1.0423008, 1.0423006)
|
||||
bones/134/rotation = Quaternion(0.02152103, -3.688601e-08, -1.5255387e-07, 0.99976844)
|
||||
bones/134/scale = Vector3(0.9882629, 0.9882634, 0.98826265)
|
||||
bones/135/position = Vector3(-0.0317431, 0.60466677, -0.39704087)
|
||||
bones/135/rotation = Quaternion(0.22344373, -0.32689255, 0.658746, -0.6397405)
|
||||
bones/135/scale = Vector3(1.0000048, 1.0000036, 1.0000046)
|
||||
bones/137/position = Vector3(-0.33244255, 0.70370555, 0.67530614)
|
||||
bones/137/rotation = Quaternion(0.7519437, -0.5788053, 0.30500948, 0.08083551)
|
||||
bones/138/position = Vector3(-0.19594865, 0.65740275, -0.22511396)
|
||||
bones/138/rotation = Quaternion(0.36201134, 0.22157827, -0.6475769, -0.63284683)
|
||||
bones/138/scale = Vector3(1.0000019, 1.0000045, 1.0000057)
|
||||
bones/139/rotation = Quaternion(-0.018797327, 0.13857716, 0.33871746, 0.9304373)
|
||||
bones/139/scale = Vector3(0.9999983, 1.0000024, 0.9999992)
|
||||
bones/140/rotation = Quaternion(0.09896898, 0.1986053, -0.00787212, 0.975038)
|
||||
bones/140/scale = Vector3(1.0000031, 0.9999977, 0.9999988)
|
||||
bones/143/scale = Vector3(1.000005, 0.99999815, 0.9999967)
|
||||
bones/145/rotation = Quaternion(-1.7910523e-07, 0.10005118, -9.714451e-08, 0.9949823)
|
||||
bones/145/scale = Vector3(1.0000045, 0.99999803, 0.9999968)
|
||||
bones/147/scale = Vector3(1.0000035, 0.99999845, 0.9999981)
|
||||
bones/148/rotation = Quaternion(2.0844507e-07, 0.011625211, 4.5709146e-07, 0.9999325)
|
||||
bones/148/scale = Vector3(1.000004, 0.9999991, 0.999998)
|
||||
bones/150/rotation = Quaternion(-0.51635444, 0.16816957, -0.63408744, 0.55048186)
|
||||
bones/150/scale = Vector3(1.000001, 1.0000067, 1.000004)
|
||||
bones/151/rotation = Quaternion(-0.24332346, -0.12663896, -0.6612195, 0.6982443)
|
||||
bones/151/scale = Vector3(1.0000011, 1.0000017, 1.0000095)
|
||||
bones/152/position = Vector3(0.027921734, -0.124764316, 0.07102555)
|
||||
bones/152/rotation = Quaternion(-0.12973516, 0.47151387, -0.86254627, -0.12983702)
|
||||
bones/153/rotation = Quaternion(-0.018797398, 0.13857722, 0.33871746, 0.9304373)
|
||||
bones/155/rotation = Quaternion(-0.36541468, 0.16190512, -0.07102372, 0.91390073)
|
||||
bones/155/scale = Vector3(0.99999994, 1, 0.9999998)
|
||||
bones/156/rotation = Quaternion(0.68045896, -0.19169958, -0.3896983, 0.59022206)
|
||||
bones/157/rotation = Quaternion(-0.01277751, -0.011854968, -0.0001513001, 0.9998481)
|
||||
bones/157/scale = Vector3(1.0423003, 1.0422994, 1.0423005)
|
||||
bones/158/rotation = Quaternion(0.021521209, -2.5687226e-07, -2.570953e-07, 0.9997684)
|
||||
bones/158/scale = Vector3(0.9882631, 0.98826426, 0.9882618)
|
||||
bones/159/position = Vector3(-0.19594839, 0.65740275, -0.2251139)
|
||||
bones/159/rotation = Quaternion(0.28422734, 0.29369113, -0.68527013, -0.60279787)
|
||||
bones/159/scale = Vector3(1.0000027, 1.0000043, 1.0000049)
|
||||
bones/161/position = Vector3(0.07716276, 0.6410925, 0.71644557)
|
||||
bones/161/rotation = Quaternion(0.75079244, 0.54212654, -0.3715475, 0.0660462)
|
||||
bones/162/position = Vector3(-0.33244255, 0.70370555, 0.67530614)
|
||||
bones/162/rotation = Quaternion(0.7519437, -0.5788053, 0.30500948, 0.08083551)
|
||||
bones/165/position = Vector3(-1.5017577e-08, 0.26895812, -1.6243575e-08)
|
||||
bones/165/rotation = Quaternion(-0.019247467, -0.20323175, 0.97894067, -0.0012537595)
|
||||
bones/166/position = Vector3(0.0034187725, -3.131728, 0.9674823)
|
||||
bones/167/position = Vector3(0.209171, 5.0901713, -2.6670303)
|
||||
bones/167/rotation = Quaternion(0.16656846, 0.015223213, 0.18356222, 0.9686734)
|
||||
bones/167/scale = Vector3(0.9999988, 0.9999987, 1.0000023)
|
||||
bones/168/position = Vector3(0.18381567, -0.9622623, 0.9894084)
|
||||
bones/168/rotation = Quaternion(0.9362244, -6.2652596e-08, -0.34127164, -0.083770975)
|
||||
bones/168/scale = Vector3(1.0000011, 1.0000015, 1.0000101)
|
||||
bones/170/position = Vector3(0.748137, 0.69556385, 3.7252903e-09)
|
||||
bones/170/rotation = Quaternion(0.019250846, -0.20323181, 0.9789406, 0.001253055)
|
||||
bones/171/position = Vector3(0.6322718, -2.6572587, 0.6064028)
|
||||
bones/172/position = Vector3(-1.5122895, 4.4686184, -2.7014794)
|
||||
bones/172/rotation = Quaternion(0.21553025, -0.03620148, 0.11066054, 0.9695311)
|
||||
bones/172/scale = Vector3(0.99999887, 0.9999985, 1.0000024)
|
||||
bones/173/position = Vector3(0.18381546, -0.96226203, 0.9894083)
|
||||
bones/173/rotation = Quaternion(0.93622434, -2.9748788e-08, 0.34127158, -0.083771475)
|
||||
bones/173/scale = Vector3(0.999999, 1.0000014, 0.99999464)
|
||||
bones/175/position = Vector3(0.2542465, -2.2077389, 0.9589075)
|
||||
bones/175/rotation = Quaternion(-0.008919476, -0.00021326332, -0.000697989, 0.99996)
|
||||
bones/183/position = Vector3(-1.982537e-07, 5.9604563e-08, -1.517833e-08)
|
||||
bones/185/rotation = Quaternion(5.4077844e-07, -0.20349081, 0.97907686, -1.12395135e-07)
|
||||
bones/186/position = Vector3(0.57634556, 3.7607954, 0.15364014)
|
||||
bones/186/rotation = Quaternion(-0.9604305, -0.020206233, -0.08076539, -0.26578543)
|
||||
bones/186/scale = Vector3(0.9999997, 0.99999994, 1)
|
||||
bones/187/rotation = Quaternion(0.15451065, -2.0305349e-09, -2.0850066e-09, 0.9879911)
|
||||
bones/187/scale = Vector3(1.0000002, 0.99999994, 0.9999999)
|
||||
bones/197/position = Vector3(-0.0011225368, -0.015787723, -0.051779967)
|
||||
bones/199/rotation = Quaternion(0.00034800146, -0.20349097, 0.9790768, -7.2328476e-05)
|
||||
bones/200/position = Vector3(-1.0407574, 3.6267605, -0.083099455)
|
||||
bones/200/rotation = Quaternion(-0.9604305, -0.020206233, -0.08076539, -0.26578543)
|
||||
bones/200/scale = Vector3(0.9999997, 0.99999994, 1)
|
||||
bones/201/rotation = Quaternion(0.15451066, -1.9585848e-09, -2.5450761e-09, 0.9879911)
|
||||
bones/201/scale = Vector3(1.0000002, 0.99999994, 0.99999994)
|
||||
|
||||
[editable path="bear_model"]
|
||||
[editable path="bear_model/test_cube/Bear_FX"]
|
||||
@@ -0,0 +1,319 @@
|
||||
[gd_scene format=3 uid="uid://o8ocjfprxa7u"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cn7fhjkro7637" path="res://bear.gd" id="1_beargd"]
|
||||
[ext_resource type="PackedScene" uid="uid://cofv5dbavesis" path="res://Assets/Bear.glb" id="2_bearglb"]
|
||||
[ext_resource type="Script" uid="uid://bsbed05ifr18s" path="res://bear_test_cube.gd" id="3_rog1v"]
|
||||
[ext_resource type="PackedScene" uid="uid://bdbx0wwa73rhp" path="res://Assets/fx/Bear_FX.glb" id="4_rog1v"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_body"]
|
||||
radius = 1.0
|
||||
height = 2.4
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_hit"]
|
||||
radius = 1.3
|
||||
height = 2.7
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_bfebr"]
|
||||
size = Vector3(6.2019043, 8.561401, 7.0739746)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_rog1v"]
|
||||
size = Vector3(14.399288, 51.902206, 5.741211)
|
||||
|
||||
[node name="Bear" type="CharacterBody3D" unique_id=1573237287]
|
||||
script = ExtResource("1_beargd")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=830443382]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2, 0)
|
||||
shape = SubResource("CapsuleShape3D_body")
|
||||
|
||||
[node name="HitArea" type="Area3D" parent="." unique_id=365327397]
|
||||
monitorable = false
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="HitArea" unique_id=2111867348]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.35, 0)
|
||||
shape = SubResource("CapsuleShape3D_hit")
|
||||
|
||||
[node name="bear_model" parent="." unique_id=359217823 instance=ExtResource("2_bearglb")]
|
||||
|
||||
[node name="test_cube" type="Node3D" parent="bear_model" unique_id=646988893]
|
||||
script = ExtResource("3_rog1v")
|
||||
|
||||
[node name="Bear_FX" parent="bear_model/test_cube" unique_id=1183391245 instance=ExtResource("4_rog1v")]
|
||||
|
||||
[node name="Bear_fx_jump_smash" parent="bear_model/test_cube/Bear_FX" index="0" unique_id=750478984]
|
||||
visible = false
|
||||
|
||||
[node name="Bear_fx_claw_attack_R" parent="bear_model/test_cube/Bear_FX" index="1" unique_id=88064381]
|
||||
visible = false
|
||||
|
||||
[node name="Bear_fx_claw_attack_L" parent="bear_model/test_cube/Bear_FX" index="2" unique_id=1378755061]
|
||||
visible = false
|
||||
|
||||
[node name="Bear_fx_smash_hit" parent="bear_model/test_cube/Bear_FX" index="3" unique_id=1711579105]
|
||||
transform = Transform3D(0.55488384, -0.039024748, -0.018949924, 0.041069064, 0.55086076, 0.06814586, 0.013977209, -0.06933683, 0.5520644, 1.327292, -0.21312934, 5.190573)
|
||||
|
||||
[node name="RigidBody3D" type="AnimatableBody3D" parent="bear_model/test_cube/Bear_FX/Bear_fx_smash_hit" index="0" unique_id=1764208051]
|
||||
transform = Transform3D(1.0000001, -1.21071935e-08, -1.8626451e-08, -9.313226e-10, 0.99999994, 7.450581e-09, 3.7252903e-09, -1.4901161e-08, 0.99999994, 0, 0, 0)
|
||||
collision_layer = 8
|
||||
collision_mask = 2
|
||||
|
||||
[node name="CollisionShape3D2" type="CollisionShape3D" parent="bear_model/test_cube/Bear_FX/Bear_fx_smash_hit/RigidBody3D" unique_id=1779197150]
|
||||
transform = Transform3D(0.99993557, -0.00749125, -0.010078691, 0.0077760145, 0.999569, 0.028562747, 0.009858355, -0.028639637, 0.9995405, -1.5136471, 0.9093375, 35.591957)
|
||||
shape = SubResource("BoxShape3D_bfebr")
|
||||
disabled = true
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="bear_model/test_cube/Bear_FX/Bear_fx_smash_hit/RigidBody3D" unique_id=1276552823]
|
||||
transform = Transform3D(0.9935104, -0.040698394, -0.10621016, -0.108634494, -0.06290151, -0.9920882, 0.03369555, 0.99719334, -0.06691426, -1.6357545, -0.5093044, 12.68803)
|
||||
shape = SubResource("BoxShape3D_rog1v")
|
||||
|
||||
[node name="Skeleton3D" parent="bear_model/bear-rig" parent_id_path=PackedInt32Array(359217823, 1017999212) index="0" unique_id=1624609914]
|
||||
bones/1/position = Vector3(0.00851878, 0.24701798, 1.2888045)
|
||||
bones/1/rotation = Quaternion(0.29791054, -0.060797628, -0.056875575, 0.9509564)
|
||||
bones/2/rotation = Quaternion(0.084239505, -0.026013458, 0.009274505, 0.9960628)
|
||||
bones/2/scale = Vector3(0.9999999, 1.0000008, 0.99999934)
|
||||
bones/3/rotation = Quaternion(-0.14812404, -0.039577905, 0.049865585, 0.98691756)
|
||||
bones/4/rotation = Quaternion(-0.40577498, -0.03082885, 0.05040324, 0.9120612)
|
||||
bones/5/rotation = Quaternion(0.27801633, 0.0014148077, 0.015671793, 0.96044755)
|
||||
bones/6/rotation = Quaternion(0.50370073, 0.13519946, -0.093789615, 0.8480627)
|
||||
bones/7/rotation = Quaternion(0.75079185, 0.54212743, -0.37154716, 0.06604591)
|
||||
bones/8/rotation = Quaternion(0.22344273, -0.32689556, 0.65874565, -0.63973963)
|
||||
bones/9/rotation = Quaternion(0.026405705, -0.27415153, -0.3226086, 0.9055757)
|
||||
bones/10/rotation = Quaternion(0.030285481, -0.31167626, -0.037417818, 0.94896823)
|
||||
bones/11/rotation = Quaternion(0.751943, -0.5788067, 0.30500817, 0.080837056)
|
||||
bones/12/rotation = Quaternion(0.28422552, 0.2936944, -0.68526876, -0.6027987)
|
||||
bones/13/rotation = Quaternion(0.020711409, 0.24585825, 0.3386082, 0.9080029)
|
||||
bones/14/rotation = Quaternion(0.098969, 0.19860524, -0.007872087, 0.97503805)
|
||||
bones/15/rotation = Quaternion(0.6979166, 0.16086513, -0.15598965, 0.680222)
|
||||
bones/16/rotation = Quaternion(0.89734674, 0.09874082, -0.25790086, 0.34424722)
|
||||
bones/17/rotation = Quaternion(-0.13802421, 0.26758972, 0.081159085, 0.9501359)
|
||||
bones/17/scale = Vector3(0.9999998, 1.0000002, 1)
|
||||
bones/19/rotation = Quaternion(-4.514978e-15, 1, 7.4505806e-08, -5.523351e-07)
|
||||
bones/20/rotation = Quaternion(-0.49266306, -0.27058616, 0.262383, 0.7843606)
|
||||
bones/21/rotation = Quaternion(0.0016915401, 0.70246154, -0.001669446, 0.7117178)
|
||||
bones/22/rotation = Quaternion(-0.5496364, -0.3220462, -0.22350304, 0.73772115)
|
||||
bones/22/scale = Vector3(0.9999997, 0.9999998, 0.9999999)
|
||||
bones/23/rotation = Quaternion(-0.00015351747, 0.902104, -0.4315187, 0.00032039074)
|
||||
bones/24/rotation = Quaternion(6.628114e-12, 0.99999994, 5.2154085e-08, -0.00035543842)
|
||||
bones/25/position = Vector3(1.0191536, 3.5353048, 3.5049686)
|
||||
bones/25/rotation = Quaternion(-0.087474234, 0.16733547, 0.98056763, 0.053239316)
|
||||
bones/25/scale = Vector3(1, 17.518272, 1.0000001)
|
||||
bones/26/position = Vector3(-1.0831825, 3.749937, 2.5891113)
|
||||
bones/26/rotation = Quaternion(0.016340872, 0.19671263, 0.9801456, 0.01875816)
|
||||
bones/26/scale = Vector3(1.0000001, 18.765795, 1)
|
||||
bones/27/position = Vector3(1.0193456, -0.43209565, 2.5343885)
|
||||
bones/27/rotation = Quaternion(0.61800283, -0.11976056, 0.11976072, 0.7677157)
|
||||
bones/27/scale = Vector3(0.99999994, 16.85072, 1)
|
||||
bones/28/position = Vector3(-0.8340287, 1.0348616, 1.282705)
|
||||
bones/28/rotation = Quaternion(0.82860446, -0.029359974, 0.02935981, 0.5582926)
|
||||
bones/28/scale = Vector3(0.99999994, 32.068844, 1)
|
||||
bones/30/position = Vector3(0.032563455, -0.8335703, -0.9236449)
|
||||
bones/30/rotation = Quaternion(-0.8670657, 0.042821795, -0.07139772, 0.4911883)
|
||||
bones/31/position = Vector3(2.3450447e-08, -1.4631646, 0.23291242)
|
||||
bones/31/rotation = Quaternion(-6.0737464e-09, 4.8699293e-09, -1.4618977e-09, 1)
|
||||
bones/31/scale = Vector3(0.99999994, 0.9999999, 0.99999994)
|
||||
bones/32/position = Vector3(-0.04394375, -1.087056, 0.096768975)
|
||||
bones/32/rotation = Quaternion(-0.8343034, 0.119118, -0.061490715, 0.5347595)
|
||||
bones/32/scale = Vector3(0.9999999, 0.99999976, 0.99999964)
|
||||
bones/33/position = Vector3(3.977649e-08, -1.4631644, 0.23291251)
|
||||
bones/33/rotation = Quaternion(-8.833673e-08, -2.419923e-08, -6.733043e-09, 1)
|
||||
bones/33/scale = Vector3(0.9999998, 0.9999998, 0.99999994)
|
||||
bones/35/position = Vector3(1.0184407e-08, -1.0594703, -5.9146995e-08)
|
||||
bones/35/rotation = Quaternion(0.99971783, 1.3593646e-07, 5.3695976e-06, -0.023754615)
|
||||
bones/35/scale = Vector3(0.99999976, 0.9999998, 1.0000012)
|
||||
bones/39/position = Vector3(0.8199172, 0.25251278, 0.47214246)
|
||||
bones/39/rotation = Quaternion(0.71402234, 0.34199142, 0.043267474, 0.60937834)
|
||||
bones/39/scale = Vector3(1.0000004, 0.9999996, 0.9999991)
|
||||
bones/40/rotation = Quaternion(0.9336719, 1.2799235e-07, 3.7337827e-08, 0.3581296)
|
||||
bones/40/scale = Vector3(1.0000004, 1.0000001, 1.0000001)
|
||||
bones/41/rotation = Quaternion(-0.13802455, 0.26758966, 0.08115916, 0.9501359)
|
||||
bones/41/scale = Vector3(0.99999946, 0.99999976, 0.9999996)
|
||||
bones/42/position = Vector3(-1.9729964e-07, 0.56145483, 7.283501e-08)
|
||||
bones/46/scale = Vector3(0.99999946, 0.99999964, 0.9999999)
|
||||
bones/48/rotation = Quaternion(-2.9741386e-07, 0.13593404, 1.01778824e-07, 0.9907179)
|
||||
bones/48/scale = Vector3(0.9999993, 0.9999996, 0.9999999)
|
||||
bones/50/scale = Vector3(0.99999994, 0.99999994, 0.9999998)
|
||||
bones/51/rotation = Quaternion(-2.5567479e-08, -0.20499781, -2.3086146e-08, 0.9787625)
|
||||
bones/51/scale = Vector3(0.9999999, 0.99999964, 0.99999964)
|
||||
bones/53/position = Vector3(-0.8199191, 0.25251284, 0.47213903)
|
||||
bones/53/rotation = Quaternion(-0.5351706, 0.35860845, -0.15898216, 0.74814254)
|
||||
bones/53/scale = Vector3(1, 0.99999875, 0.99999946)
|
||||
bones/54/rotation = Quaternion(0.0023762286, -4.7362324e-08, -6.475868e-08, 0.9999972)
|
||||
bones/55/rotation = Quaternion(-0.54963607, -0.322046, -0.22350314, 0.73772144)
|
||||
bones/55/scale = Vector3(1.0000002, 1, 1.0000002)
|
||||
bones/56/position = Vector3(0.0013532753, 0.57868266, 0.05537574)
|
||||
bones/56/rotation = Quaternion(-0.00015348212, 0.90210384, -0.43151882, 0.0003204293)
|
||||
bones/57/rotation = Quaternion(0.70073944, -0.70073956, -0.094679825, -0.09467953)
|
||||
bones/60/scale = Vector3(1.0000004, 1.0000004, 1.0000002)
|
||||
bones/62/rotation = Quaternion(-1.7092354e-08, -0.18223058, 2.6700846e-08, 0.98325586)
|
||||
bones/62/scale = Vector3(1.0000002, 1.0000002, 1.0000001)
|
||||
bones/64/scale = Vector3(1.0000004, 1.0000004, 1)
|
||||
bones/65/rotation = Quaternion(-1.0345744e-08, -0.3796584, -4.0675246e-08, 0.9251268)
|
||||
bones/65/scale = Vector3(1.0000002, 1.0000004, 1.0000004)
|
||||
bones/67/rotation = Quaternion(0.7179022, -7.671307e-07, 7.885642e-07, 0.696144)
|
||||
bones/67/scale = Vector3(1.0000004, 0.9999986, 0.99999994)
|
||||
bones/68/rotation = Quaternion(0.9776482, 2.0029378e-07, 1.0460874e-06, -0.2102479)
|
||||
bones/68/scale = Vector3(1.0000004, 1.0000004, 0.9999982)
|
||||
bones/69/position = Vector3(-2.4645832e-08, -6.861796e-09, 7.455772e-08)
|
||||
bones/69/rotation = Quaternion(-0.8315212, 2.5276703e-08, -9.3330055e-09, 0.5554931)
|
||||
bones/69/scale = Vector3(1, 1.0000001, 1.0000002)
|
||||
bones/70/rotation = Quaternion(0.67750055, 8.820757e-08, 7.575834e-08, 0.7355223)
|
||||
bones/70/scale = Vector3(1, 1, 1)
|
||||
bones/71/scale = Vector3(0.9999999, 1, 0.9999999)
|
||||
bones/72/rotation = Quaternion(-2.1641608e-07, -4.6565607e-10, -4.6576065e-10, 1)
|
||||
bones/75/rotation = Quaternion(-0.34314692, -0.20321459, -0.2785586, 0.8737043)
|
||||
bones/76/position = Vector3(1.01587794e-07, -1.5306958e-07, -4.3554866e-07)
|
||||
bones/76/rotation = Quaternion(-0.51764834, -7.167482e-08, 1.7163823e-07, 0.85559356)
|
||||
bones/77/rotation = Quaternion(0.93367195, 1.2110854e-07, 3.8556042e-08, 0.35812962)
|
||||
bones/78/position = Vector3(0.8199172, 0.25251257, 0.47214243)
|
||||
bones/78/rotation = Quaternion(0.6979164, 0.16086517, -0.15598962, 0.6802223)
|
||||
bones/78/scale = Vector3(1.0000004, 0.9999997, 0.99999905)
|
||||
bones/80/rotation = Quaternion(0.7179022, -7.6713064e-07, 7.885641e-07, 0.696144)
|
||||
bones/80/scale = Vector3(1.0000004, 0.9999986, 0.99999994)
|
||||
bones/81/rotation = Quaternion(0.97764814, 1.9846473e-07, 1.0426893e-06, -0.21024783)
|
||||
bones/81/scale = Vector3(1.0000004, 1.0000002, 0.9999982)
|
||||
bones/82/position = Vector3(6.103571e-08, 8.8816435e-08, -3.6955274e-09)
|
||||
bones/82/rotation = Quaternion(-0.8315211, 2.3407136e-08, -1.2821512e-08, 0.5554932)
|
||||
bones/82/scale = Vector3(0.99999994, 0.99999994, 1)
|
||||
bones/83/rotation = Quaternion(0.6775009, -8.600083e-08, -8.977273e-08, 0.735522)
|
||||
bones/83/scale = Vector3(1, 1.0000001, 1)
|
||||
bones/84/scale = Vector3(0.99999994, 1.0000001, 0.9999999)
|
||||
bones/85/rotation = Quaternion(2.6833732e-07, -9.313788e-10, -2.5612494e-09, 1)
|
||||
bones/85/scale = Vector3(1.0000001, 1, 1.0000001)
|
||||
bones/87/rotation = Quaternion(-0.5230753, 0.20132942, 0.026226493, 0.8277505)
|
||||
bones/88/rotation = Quaternion(0.61967987, 0.23118778, 0.3169036, 0.679795)
|
||||
bones/89/position = Vector3(2.953037e-07, 4.9207458e-08, -4.3015167e-08)
|
||||
bones/89/rotation = Quaternion(-0.001144886, -2.973514e-08, 2.817069e-08, 0.9999994)
|
||||
bones/90/rotation = Quaternion(0.0023764072, -4.0769752e-08, -7.0690255e-08, 0.99999726)
|
||||
bones/91/position = Vector3(-0.8199192, 0.2525128, 0.47213912)
|
||||
bones/91/rotation = Quaternion(-0.49266297, -0.27058598, 0.2623832, 0.78436047)
|
||||
bones/91/scale = Vector3(1.0000002, 0.999999, 0.99999964)
|
||||
bones/96/position = Vector3(-0.021971898, -1.2751104, 0.16484088)
|
||||
bones/96/rotation = Quaternion(-0.47603267, 0.067788206, -0.035077166, 0.8761091)
|
||||
bones/96/scale = Vector3(0.9999999, 0.9999999, 0.99999976)
|
||||
bones/97/rotation = Quaternion(0.997074, -1.2813135e-07, 1.666339e-06, -0.07644201)
|
||||
bones/98/position = Vector3(0.01993539, 0.08757691, 0.045667563)
|
||||
bones/98/rotation = Quaternion(0.1475291, 0.03397043, -0.019923227, 0.9882734)
|
||||
bones/98/scale = Vector3(1, 1.0000011, 1.0000023)
|
||||
bones/101/position = Vector3(-0.021972047, 0.8282039, 0.0959422)
|
||||
bones/101/rotation = Quaternion(0.8371564, 0.04015539, 0.06490996, 0.5416119)
|
||||
bones/101/scale = Vector3(1, 1.0000066, 0.99998474)
|
||||
bones/102/rotation = Quaternion(0.95545256, -6.924111e-08, 2.2887033e-07, -0.29514462)
|
||||
bones/103/position = Vector3(0.17285576, 0.72785676, 1.0822707)
|
||||
bones/103/rotation = Quaternion(0.27801546, 0.0014157619, 0.015671493, 0.9604477)
|
||||
bones/103/scale = Vector3(1.0000002, 1.000013, 1.0000246)
|
||||
bones/104/rotation = Quaternion(0.5037003, 0.13519715, -0.093790196, 0.84806323)
|
||||
bones/104/scale = Vector3(1.0000721, 1.0000457, 0.99993384)
|
||||
bones/105/rotation = Quaternion(0.97757924, -0.053521663, -0.054415643, -0.19624804)
|
||||
bones/105/scale = Vector3(1.0000001, 1.0000083, 1.0000036)
|
||||
bones/106/position = Vector3(0.023142539, -0.54231995, -0.9607401)
|
||||
bones/106/rotation = Quaternion(0.99272084, -0.08158898, -0.03307842, -0.08218607)
|
||||
bones/107/rotation = Quaternion(0.903578, -0.12777254, -0.05477002, -0.4052421)
|
||||
bones/107/scale = Vector3(0.9999992, 0.9999624, 1.0000123)
|
||||
bones/108/position = Vector3(-1.1340098e-08, 7.923448e-07, 9.0939814e-08)
|
||||
bones/108/rotation = Quaternion(0.98967296, 0.0031370325, 0.10343237, -0.09919364)
|
||||
bones/110/rotation = Quaternion(9.815354e-07, 7.072085e-10, -9.586452e-08, 1)
|
||||
bones/110/scale = Vector3(0.99999994, 0.99999976, 1.0000001)
|
||||
bones/113/position = Vector3(0.07716276, 0.6410925, 0.71644557)
|
||||
bones/113/rotation = Quaternion(0.75079244, 0.54212654, -0.3715475, 0.0660462)
|
||||
bones/114/position = Vector3(-0.031743176, 0.60466695, -0.39704067)
|
||||
bones/114/rotation = Quaternion(0.4176498, -0.11118397, 0.55639553, -0.70966953)
|
||||
bones/114/scale = Vector3(1.0000015, 1.0000038, 1.0000079)
|
||||
bones/115/rotation = Quaternion(-0.07547326, 0.02173067, -0.31477332, 0.945912)
|
||||
bones/115/scale = Vector3(0.9999974, 1.0000036, 0.99999976)
|
||||
bones/116/rotation = Quaternion(0.03028559, -0.3116764, -0.037417784, 0.9489682)
|
||||
bones/116/scale = Vector3(1.0000005, 0.9999972, 1.0000013)
|
||||
bones/119/scale = Vector3(1.0000043, 0.9999975, 0.99999744)
|
||||
bones/121/rotation = Quaternion(-4.820391e-08, -0.1579088, -2.0880496e-08, 0.98745376)
|
||||
bones/121/scale = Vector3(1.0000037, 0.99999774, 0.9999977)
|
||||
bones/123/scale = Vector3(1.000003, 0.9999977, 0.99999917)
|
||||
bones/124/rotation = Quaternion(-3.1036683e-07, 0.17317644, 6.989145e-08, 0.9848908)
|
||||
bones/124/scale = Vector3(1.0000037, 0.9999978, 0.99999875)
|
||||
bones/126/rotation = Quaternion(-0.5163543, -0.16816929, 0.6340875, 0.550482)
|
||||
bones/126/scale = Vector3(1.0000015, 1.000007, 1.000004)
|
||||
bones/127/rotation = Quaternion(-0.24332331, 0.12663932, 0.6612194, 0.6982444)
|
||||
bones/127/scale = Vector3(1.0000017, 1.0000014, 1.0000097)
|
||||
bones/128/position = Vector3(-0.008928956, 0.128764, -0.06877987)
|
||||
bones/128/rotation = Quaternion(0.025037244, 0.39930493, -0.88358396, 0.24332726)
|
||||
bones/129/rotation = Quaternion(-0.07547334, 0.021730714, -0.31477335, 0.94591194)
|
||||
bones/131/rotation = Quaternion(-0.41802245, -0.28161782, 0.08442414, 0.85954714)
|
||||
bones/132/rotation = Quaternion(-0.5281791, -0.34319904, -0.62196887, -0.46518382)
|
||||
bones/133/rotation = Quaternion(-0.012777329, 0.011854946, 0.00015161165, 0.9998482)
|
||||
bones/133/scale = Vector3(1.0423008, 1.0423008, 1.0423006)
|
||||
bones/134/rotation = Quaternion(0.02152103, -3.688601e-08, -1.5255387e-07, 0.99976844)
|
||||
bones/134/scale = Vector3(0.9882629, 0.9882634, 0.98826265)
|
||||
bones/135/position = Vector3(-0.0317431, 0.60466677, -0.39704087)
|
||||
bones/135/rotation = Quaternion(0.22344373, -0.32689255, 0.658746, -0.6397405)
|
||||
bones/135/scale = Vector3(1.0000048, 1.0000036, 1.0000046)
|
||||
bones/137/position = Vector3(-0.33244255, 0.70370555, 0.67530614)
|
||||
bones/137/rotation = Quaternion(0.7519437, -0.5788053, 0.30500948, 0.08083551)
|
||||
bones/138/position = Vector3(-0.19594865, 0.65740275, -0.22511396)
|
||||
bones/138/rotation = Quaternion(0.36201134, 0.22157827, -0.6475769, -0.63284683)
|
||||
bones/138/scale = Vector3(1.0000019, 1.0000045, 1.0000057)
|
||||
bones/139/rotation = Quaternion(-0.018797327, 0.13857716, 0.33871746, 0.9304373)
|
||||
bones/139/scale = Vector3(0.9999983, 1.0000024, 0.9999992)
|
||||
bones/140/rotation = Quaternion(0.09896898, 0.1986053, -0.00787212, 0.975038)
|
||||
bones/140/scale = Vector3(1.0000031, 0.9999977, 0.9999988)
|
||||
bones/143/scale = Vector3(1.000005, 0.99999815, 0.9999967)
|
||||
bones/145/rotation = Quaternion(-1.7910523e-07, 0.10005118, -9.714451e-08, 0.9949823)
|
||||
bones/145/scale = Vector3(1.0000045, 0.99999803, 0.9999968)
|
||||
bones/147/scale = Vector3(1.0000035, 0.99999845, 0.9999981)
|
||||
bones/148/rotation = Quaternion(2.0844507e-07, 0.011625211, 4.5709146e-07, 0.9999325)
|
||||
bones/148/scale = Vector3(1.000004, 0.9999991, 0.999998)
|
||||
bones/150/rotation = Quaternion(-0.51635444, 0.16816957, -0.63408744, 0.55048186)
|
||||
bones/150/scale = Vector3(1.000001, 1.0000067, 1.000004)
|
||||
bones/151/rotation = Quaternion(-0.24332346, -0.12663896, -0.6612195, 0.6982443)
|
||||
bones/151/scale = Vector3(1.0000011, 1.0000017, 1.0000095)
|
||||
bones/152/position = Vector3(0.027921734, -0.124764316, 0.07102555)
|
||||
bones/152/rotation = Quaternion(-0.12973516, 0.47151387, -0.86254627, -0.12983702)
|
||||
bones/153/rotation = Quaternion(-0.018797398, 0.13857722, 0.33871746, 0.9304373)
|
||||
bones/155/rotation = Quaternion(-0.36541468, 0.16190512, -0.07102372, 0.91390073)
|
||||
bones/155/scale = Vector3(0.99999994, 1, 0.9999998)
|
||||
bones/156/rotation = Quaternion(0.68045896, -0.19169958, -0.3896983, 0.59022206)
|
||||
bones/157/rotation = Quaternion(-0.01277751, -0.011854968, -0.0001513001, 0.9998481)
|
||||
bones/157/scale = Vector3(1.0423003, 1.0422994, 1.0423005)
|
||||
bones/158/rotation = Quaternion(0.021521209, -2.5687226e-07, -2.570953e-07, 0.9997684)
|
||||
bones/158/scale = Vector3(0.9882631, 0.98826426, 0.9882618)
|
||||
bones/159/position = Vector3(-0.19594839, 0.65740275, -0.2251139)
|
||||
bones/159/rotation = Quaternion(0.28422734, 0.29369113, -0.68527013, -0.60279787)
|
||||
bones/159/scale = Vector3(1.0000027, 1.0000043, 1.0000049)
|
||||
bones/161/position = Vector3(0.07716276, 0.6410925, 0.71644557)
|
||||
bones/161/rotation = Quaternion(0.75079244, 0.54212654, -0.3715475, 0.0660462)
|
||||
bones/162/position = Vector3(-0.33244255, 0.70370555, 0.67530614)
|
||||
bones/162/rotation = Quaternion(0.7519437, -0.5788053, 0.30500948, 0.08083551)
|
||||
bones/165/position = Vector3(-1.5017577e-08, 0.26895812, -1.6243575e-08)
|
||||
bones/165/rotation = Quaternion(-0.019247467, -0.20323175, 0.97894067, -0.0012537595)
|
||||
bones/166/position = Vector3(0.0034187725, -3.131728, 0.9674823)
|
||||
bones/167/position = Vector3(0.209171, 5.0901713, -2.6670303)
|
||||
bones/167/rotation = Quaternion(0.16656846, 0.015223213, 0.18356222, 0.9686734)
|
||||
bones/167/scale = Vector3(0.9999988, 0.9999987, 1.0000023)
|
||||
bones/168/position = Vector3(0.18381567, -0.9622623, 0.9894084)
|
||||
bones/168/rotation = Quaternion(0.9362244, -6.2652596e-08, -0.34127164, -0.083770975)
|
||||
bones/168/scale = Vector3(1.0000011, 1.0000015, 1.0000101)
|
||||
bones/170/position = Vector3(0.748137, 0.69556385, 3.7252903e-09)
|
||||
bones/170/rotation = Quaternion(0.019250846, -0.20323181, 0.9789406, 0.001253055)
|
||||
bones/171/position = Vector3(0.6322718, -2.6572587, 0.6064028)
|
||||
bones/172/position = Vector3(-1.5122895, 4.4686184, -2.7014794)
|
||||
bones/172/rotation = Quaternion(0.21553025, -0.03620148, 0.11066054, 0.9695311)
|
||||
bones/172/scale = Vector3(0.99999887, 0.9999985, 1.0000024)
|
||||
bones/173/position = Vector3(0.18381546, -0.96226203, 0.9894083)
|
||||
bones/173/rotation = Quaternion(0.93622434, -2.9748788e-08, 0.34127158, -0.083771475)
|
||||
bones/173/scale = Vector3(0.999999, 1.0000014, 0.99999464)
|
||||
bones/175/position = Vector3(0.2542465, -2.2077389, 0.9589075)
|
||||
bones/175/rotation = Quaternion(-0.008919476, -0.00021326332, -0.000697989, 0.99996)
|
||||
bones/183/position = Vector3(-1.982537e-07, 5.9604563e-08, -1.517833e-08)
|
||||
bones/185/rotation = Quaternion(5.4077844e-07, -0.20349081, 0.97907686, -1.12395135e-07)
|
||||
bones/186/position = Vector3(0.57634556, 3.7607954, 0.15364014)
|
||||
bones/186/rotation = Quaternion(-0.9604305, -0.020206233, -0.08076539, -0.26578543)
|
||||
bones/186/scale = Vector3(0.9999997, 0.99999994, 1)
|
||||
bones/187/rotation = Quaternion(0.15451065, -2.0305349e-09, -2.0850066e-09, 0.9879911)
|
||||
bones/187/scale = Vector3(1.0000002, 0.99999994, 0.9999999)
|
||||
bones/197/position = Vector3(-0.0011225368, -0.015787723, -0.051779967)
|
||||
bones/199/rotation = Quaternion(0.00034800146, -0.20349097, 0.9790768, -7.2328476e-05)
|
||||
bones/200/position = Vector3(-1.0407574, 3.6267605, -0.083099455)
|
||||
bones/200/rotation = Quaternion(-0.9604305, -0.020206233, -0.08076539, -0.26578543)
|
||||
bones/200/scale = Vector3(0.9999997, 0.99999994, 1)
|
||||
bones/201/rotation = Quaternion(0.15451066, -1.9585848e-09, -2.5450761e-09, 0.9879911)
|
||||
bones/201/scale = Vector3(1.0000002, 0.99999994, 0.99999994)
|
||||
|
||||
[editable path="bear_model"]
|
||||
[editable path="bear_model/test_cube/Bear_FX"]
|
||||
@@ -0,0 +1,70 @@
|
||||
[gd_scene format=3]
|
||||
|
||||
[ext_resource type="Script" path="res://hitbox.gd" id="1_qxn4a"]
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_6dow8"]
|
||||
height = 3.0
|
||||
radius = 4.0
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_tmmfg"]
|
||||
size = Vector3(2.6, 2.5, 20)
|
||||
|
||||
[sub_resource type="Animation" id="Animation_wcwtv"]
|
||||
length = 0.25
|
||||
tracks/0/type = "scale_3d"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("LeapSlamHitbox/CollisionShape3D")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = PackedFloat32Array(0, 1, 0.12, 1, 0.12, 0.06, 1, 1, 1, 1, 0.25, 1, 1, 1, 1)
|
||||
|
||||
[sub_resource type="Animation" id="Animation_bg5u7"]
|
||||
length = 0.3
|
||||
tracks/0/type = "scale_3d"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("SmashHitbox/CollisionShape3D")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = PackedFloat32Array(0, 1, 1, 1, 0.02, 0.1, 1, 1, 1, 1, 0.3, 1, 1, 1, 1)
|
||||
tracks/1/type = "position_3d"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("SmashHitbox/CollisionShape3D")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = PackedFloat32Array(0, 1, 0, 0.9, 0.2, 0.1, 1, 0, 0.9, 10, 0.3, 1, 0, 0.9, 10)
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_u1id2"]
|
||||
_data = {
|
||||
&"leap_slam": SubResource("Animation_wcwtv"),
|
||||
&"smash_travel": SubResource("Animation_bg5u7")
|
||||
}
|
||||
|
||||
[node name="AttackHitboxes" type="Node3D" unique_id=2010404706]
|
||||
|
||||
[node name="LeapSlamHitbox" type="Area3D" parent="." unique_id=1751893032]
|
||||
collision_layer = 0
|
||||
collision_mask = 2
|
||||
monitoring = false
|
||||
monitorable = false
|
||||
script = ExtResource("1_qxn4a")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="LeapSlamHitbox" unique_id=1320172052]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
|
||||
shape = SubResource("CylinderShape3D_6dow8")
|
||||
|
||||
[node name="SmashHitbox" type="Area3D" parent="." unique_id=1579648726]
|
||||
collision_layer = 0
|
||||
collision_mask = 2
|
||||
monitoring = false
|
||||
monitorable = false
|
||||
script = ExtResource("1_qxn4a")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="SmashHitbox" unique_id=528637962]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9, 10)
|
||||
shape = SubResource("BoxShape3D_tmmfg")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=2139876757]
|
||||
libraries/ = SubResource("AnimationLibrary_u1id2")
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -12,13 +12,27 @@ I am a **Godot 4.6+ expert**. I follow current best practices for GDScript, scen
|
||||
|
||||
| Path | Purpose |
|
||||
|---|---|
|
||||
| `scene.tscn` | Main scene (arena + player) |
|
||||
| `scene.tscn` | The reusable **shell** loaded for every level: player, camera, HUD, PS1 filter, and an empty `LevelRoot`. Its `game_shell.gd` instances the active level's module into `LevelRoot` at runtime |
|
||||
| `levels/` | The level system: per-level module scenes plus the code that defines, loads and sequences them (see rows below) |
|
||||
| `levels/game_shell.gd` | Shell controller — on load, frees any current level module and instances `Run.active_level().level_scene` into `LevelRoot`. Swapping the whole subtree (never hiding it) is what keeps one level's meshes/colliders/spawners from leaking into the next |
|
||||
| `levels/arena_level.tscn` | The arena **level module**: floor + wall colliders, arena meshes, `MatadorSpawner` (with child `Node3D` spawn points placed by the designer), lighting, audience (`PublikNode`). Instanced into the shell's `LevelRoot` |
|
||||
| `levels/bear_level.tscn` | The Bear's Den **level module**: bear-arena mesh, its own floor collider, lighting, and a `BearSpawner` (`bear_spawn.gd`) that places the bear at center. Instanced into the shell's `LevelRoot` |
|
||||
| `Player.tscn` | Player scene root (`CharacterBody3D`) |
|
||||
| `player.gd` | Movement, charge, turning logic |
|
||||
| `camera_spring_arm.gd` | Mouse-look pivot (`Node3D` + `SpringArm3D`) |
|
||||
| `camera_follow.gd` | Smooth camera follow (`Camera3D`) |
|
||||
| `matador.gd` | Matador AI (wander / ragdoll state machine) |
|
||||
| `matador_spawn.gd` | Spawns N matadors at random arena positions |
|
||||
| `levels/matador_spawn.gd` | Arena spawner — one matador per designer-placed child `Node3D` spawn point (each enters with a jump-roll toward center); falls back to a programmatic spread if no spawn points are present. Also handles the split-on-death hydra logic |
|
||||
| `levels/bear_spawn.gd` | Bear-level spawner — instantiates `enemy_scene` at the arena center; emits the same `all_defeated` / `matador_killed` signals as `matador_spawn.gd` |
|
||||
| `Bear.tscn` / `bear.gd` | Dark-Souls-style bear boss (`CharacterBody3D`). Routine state machine (wind-up → active → recovery) picking telegraphed moves by range band: Double Swipe / Overhead Smash (close), Leap Slam (mid-far), plus Stalk (2-leg walk-in) / Prowl (4-leg lope) positioning. Melee steps in during the swing (`bear_lunge_speed`) + tracks the bull; the leap is frame-synced to JUMP_SMASH so the paws hit ground on the impact frame (`bear_leap_impact_frame`); slams kick up dust + shake. Combos chain, hyper-armour mid-swing + poise (`bear_stagger_cd`), phase 2 enrage under `bear_enrage_frac` HP. Never damages the bull by colliding — only swings/slams. A horns-first bull charge wounds it (`_sweep_bull_ram`: swept prev→now so a tunnelling/point-blank charge still lands, gated by `bear_ram_reach` + `bull_gore_arc`, edge-triggered = one charge per wound). Joins `&"matador"` so bull abilities already hit it. Tuning under the `Bear` DP section |
|
||||
| `BearAttackHitboxes.tscn` | The bear's attack colliders as a self-contained sub-scene (instanced under `bear_model`): a `LeapSlamHitbox` (Hitbox + cylinder = ground circle) and `SmashHitbox` (Hitbox + box = forward shockwave lane), plus an `AnimationPlayer` whose `leap_slam` / `smash_travel` clips author each collider's size + travel — scrub to tweak, like `Bear_FX`. `bear.gd` only fires the clip, arms the knock-up shaping, and sweeps for overlaps while it runs (see `_setup_attack_hitboxes` / `_start_attack_hitbox`) |
|
||||
| `Sword.tscn` / `hitbox.gd` | The matador's sword wrapper (glb + editor-tweakable `BladeHitbox`). `hitbox.gd` (`class_name Hitbox`, Area3D) is the shared attack collider: `activate()`/`deactivate()` gate an active window, `sweep()` catches bodies already inside (AoE), and knock-up can ramp by distance (`knock_up_min_dist`/`_max_dist`) for the bear's outer-ring launch / further-hit-flies-higher |
|
||||
| `levels/run_state.gd` | Run progression autoload (`Run`) — Slay-the-Spire map + player position across fights |
|
||||
| `levels/level_def.gd` | `LevelDef` resource — a level's name / map colour / `scene_path` (always the shell) / `level_scene` (the level module instanced into the shell) / optional `enemy_scene` (arena wave vs. a boss like the bear) |
|
||||
| `levels/map_node.gd` | `MapNode` — one runtime node on the run map (position, level, links) |
|
||||
| `levels/MapScreen.tscn` / `levels/map_screen.gd` | Between-fights map screen; win → pick a node → next level |
|
||||
| `crowd_marker.gd` | `CrowdMarker` (`@tool Node3D`, `class_name`) — designer drops one per billboard spectator via the editor's Add-Node dialog; picks one of six 60°-spaced facings from the `orientation` dropdown. Draws an editor-only preview (slab + forward arrow, never serialised) and joins the `&"crowd_marker"` group |
|
||||
| `crowd_billboards.gd` / `crowd_billboard.gdshader` | `MultiMeshInstance3D` that harvests every `CrowdMarker` (group `&"crowd_marker"`) into one draw call, using each marker's world position + chosen facing. Front/back sprite sheet baked by `tools/bake_crowd_sheet.gd`; falls back to a generated inward-facing ring when no markers are placed |
|
||||
| `debug_params.gd` | Runtime-tunable parameter registry (autoload `DP`) |
|
||||
| `Assets/` | Raw 3D assets (`.glb`, `.fbx`) |
|
||||
| `Blender/` | Blender source files, animation scripts, FBX exports |
|
||||
@@ -88,10 +102,19 @@ After FBX import, animations appear as `Armature|walk` and `Armature|idle` in An
|
||||
bash run_tests.sh
|
||||
|
||||
# Individual tests:
|
||||
gdlint *.gd tests/*.gd # GDScript lint (gdtoolkit, installed via uv)
|
||||
gdlint *.gd levels/*.gd tests/*.gd # GDScript lint (gdtoolkit, installed via uv)
|
||||
godot --headless --script tests/logic_test.gd # pure logic, ~2 s
|
||||
godot --headless --script tests/performance_test.gd # frame-budget regression guard, ~4 s
|
||||
godot --headless --script tests/gameplay_test.gd # full scene, bone sanity, ~4 s
|
||||
godot --headless --script tests/level_switch_test.gd # no arena geometry leaks into the bear level, ~2 s
|
||||
godot --headless --script tests/bear_boss_test.gd # bear boss moveset: routines, leap landing, hyper-armour, ~10 s
|
||||
godot --headless --script tests/bear_fx_test.gd # bear attack-FX: each Bear_FX clip pops its mesh + self-hides, ~2 s
|
||||
godot --headless --script tests/bear_hitbox_test.gd # bear attack colliders: leap launches everywhere (ring_frac slider) + smash lane travel, ~3 s
|
||||
godot --headless --script tests/bear_ram_test.gd # a horns-first bull charge wounds the bear once; away/wide/slow spared, ~3 s
|
||||
godot --headless --script tests/matador_stab_test.gd # matador's BladeHitbox thrust gores a stationary bull, and a landed stab breaks it off to taunt (anti-spam), ~2 s
|
||||
godot --headless --script tests/matador_taunt_react_test.gd # a taunting matador answers a charge: spear from range, sword up close, ignores non-charges, ~2 s
|
||||
godot --headless --script tests/matador_charge_test.gd # bull's charge is swept (tunnel-proof) so a fast dash still gores; a committed charge pierces the survival roll, ~2 s
|
||||
godot --headless --script tests/matador_spear_test.gd # thrown spear masks the BULL layer and hits a stationary bull, ~2 s
|
||||
|
||||
# Gameplay test with real rendering (inspect frame strip visually):
|
||||
godot --script tests/gameplay_test.gd # opens a window, saves real screenshots
|
||||
|
||||
@@ -4,15 +4,16 @@ importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bxm7c6ldrdiq5"
|
||||
path.bptc="res://.godot/imported/citrus_orchard_road_puresky_4k.hdr-262868e8787abf05f7044da72beefce7.bptc.ctex"
|
||||
path.astc="res://.godot/imported/citrus_orchard_road_puresky_4k.hdr-262868e8787abf05f7044da72beefce7.astc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://HDRI/citrus_orchard_road_puresky_4k.hdr"
|
||||
dest_files=["res://.godot/imported/citrus_orchard_road_puresky_4k.hdr-262868e8787abf05f7044da72beefce7.bptc.ctex"]
|
||||
dest_files=["res://.godot/imported/citrus_orchard_road_puresky_4k.hdr-262868e8787abf05f7044da72beefce7.bptc.ctex", "res://.godot/imported/citrus_orchard_road_puresky_4k.hdr-262868e8787abf05f7044da72beefce7.astc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -4,15 +4,16 @@ importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://3syhacswepyj"
|
||||
path.bptc="res://.godot/imported/kloppenheim_06_puresky_4k.hdr-026f0eabdfce50035e2f8417ce3e0060.bptc.ctex"
|
||||
path.astc="res://.godot/imported/kloppenheim_06_puresky_4k.hdr-026f0eabdfce50035e2f8417ce3e0060.astc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://HDRI/kloppenheim_06_puresky_4k.hdr"
|
||||
dest_files=["res://.godot/imported/kloppenheim_06_puresky_4k.hdr-026f0eabdfce50035e2f8417ce3e0060.bptc.ctex"]
|
||||
dest_files=["res://.godot/imported/kloppenheim_06_puresky_4k.hdr-026f0eabdfce50035e2f8417ce3e0060.bptc.ctex", "res://.godot/imported/kloppenheim_06_puresky_4k.hdr-026f0eabdfce50035e2f8417ce3e0060.astc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
-137
@@ -1,137 +0,0 @@
|
||||
[gd_scene format=3 uid="uid://c4df4qgpc3d5g"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://eu2lqjhowj4t" path="res://Assets/Matador.glb" id="1_eicjn"]
|
||||
[ext_resource type="Script" uid="uid://dycnoiadljbb1" path="res://Assets/matador_intro_menu.gd" id="2_5jr0i"]
|
||||
[ext_resource type="PackedScene" uid="uid://dio67r8ambe7h" path="res://Assets/arena_placeholder_v01.glb" id="3_1v6n4"]
|
||||
[ext_resource type="PackedScene" uid="uid://dxe72ig8gfbcg" path="res://Assets/arena model2026.glb" id="3_5jr0i"]
|
||||
[ext_resource type="PackedScene" uid="uid://crtm0xtiql3r8" path="res://Player.tscn" id="4_eicjn"]
|
||||
[ext_resource type="Texture2D" uid="uid://3syhacswepyj" path="res://HDRI/kloppenheim_06_puresky_4k.hdr" id="6_1v6n4"]
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_eicjn"]
|
||||
|
||||
[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_w7j4y"]
|
||||
panorama = ExtResource("6_1v6n4")
|
||||
energy_multiplier = 5.6
|
||||
|
||||
[sub_resource type="Sky" id="Sky_3el7n"]
|
||||
sky_material = SubResource("PanoramaSkyMaterial_w7j4y")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_5jr0i"]
|
||||
background_mode = 2
|
||||
background_energy_multiplier = 0.18
|
||||
sky = SubResource("Sky_3el7n")
|
||||
ambient_light_color = Color(0.31061712, 0.31061712, 0.3106171, 1)
|
||||
ambient_light_energy = 16.0
|
||||
ssao_enabled = true
|
||||
ssao_radius = 1.17
|
||||
ssao_intensity = 0.0
|
||||
glow_intensity = 0.34
|
||||
glow_strength = 0.29
|
||||
glow_bloom = 0.1
|
||||
fog_light_color = Color(2.211, 2.211, 2.211, 1)
|
||||
fog_light_energy = 0.01
|
||||
fog_density = 0.0399
|
||||
volumetric_fog_enabled = true
|
||||
volumetric_fog_density = 0.0005
|
||||
volumetric_fog_emission = Color(1, 1, 1, 1)
|
||||
volumetric_fog_emission_energy = 7.85
|
||||
volumetric_fog_anisotropy = 0.9
|
||||
volumetric_fog_length = 69.07
|
||||
|
||||
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_5jr0i"]
|
||||
dof_blur_far_enabled = true
|
||||
dof_blur_far_distance = 26.01
|
||||
dof_blur_near_enabled = true
|
||||
dof_blur_near_distance = 2.6
|
||||
dof_blur_near_transition = 5.0
|
||||
|
||||
[node name="IntroMenu" type="Node3D" unique_id=2130618263]
|
||||
|
||||
[node name="Matador" parent="." unique_id=166852612 instance=ExtResource("1_eicjn")]
|
||||
transform = Transform3D(-0.56715536, 0, -0.8236109, 0, 1, 0, 0.8236109, 0, -0.56715536, 5.2114463, -0.08998108, 1.8927763)
|
||||
script = ExtResource("2_5jr0i")
|
||||
|
||||
[node name="Skeleton3D" parent="Matador/Armature" parent_id_path=PackedInt32Array(166852612, 1447304122) index="0" unique_id=357848305]
|
||||
bones/0/position = Vector3(0.056660548, 0.6424767, -0.0167365)
|
||||
bones/0/rotation = Quaternion(0.013179442, -0.2660563, 0.073319815, 0.9610747)
|
||||
bones/1/rotation = Quaternion(0.06234612, 0.049236443, 0.08183311, 0.99347484)
|
||||
bones/2/rotation = Quaternion(-0.073883414, -0.049860783, -0.17668208, 0.9802238)
|
||||
bones/3/rotation = Quaternion(0.1986702, -0.17794952, -0.71790075, 0.6430262)
|
||||
bones/4/rotation = Quaternion(0.34491858, -0.4473084, -0.25076818, 0.7861691)
|
||||
bones/5/rotation = Quaternion(0.2577085, 0.103201896, -0.6748433, 0.68375605)
|
||||
bones/6/rotation = Quaternion(1.7417646e-08, -1.0305205e-07, -0.05870078, 0.99827564)
|
||||
bones/7/rotation = Quaternion(0.24033272, 0.3103031, 0.5222128, 0.7571301)
|
||||
bones/8/rotation = Quaternion(5.5530215e-08, 1.2911333e-07, 0.055464897, 0.99846065)
|
||||
bones/9/rotation = Quaternion(-6.3051346e-09, -3.6333955e-07, 0.005667881, 0.999984)
|
||||
bones/10/rotation = Quaternion(2.5839595e-08, 9.468444e-08, 0.058700778, 0.99827564)
|
||||
bones/11/rotation = Quaternion(0.39202607, 0.47060946, 0.57993996, 0.53713304)
|
||||
bones/12/rotation = Quaternion(0.8712108, 0.008231261, 0.48523128, 0.073990606)
|
||||
bones/13/rotation = Quaternion(-0.056263044, 0.0027001738, 0.3080972, 0.9496859)
|
||||
bones/14/rotation = Quaternion(0.016082464, 0.024660494, -0.86586916, 0.4994036)
|
||||
bones/15/rotation = Quaternion(0.6067664, -0.3062479, -0.7163194, 0.15790276)
|
||||
bones/16/rotation = Quaternion(-0.0731876, -0.0023153822, -0.47496143, 0.87695485)
|
||||
bones/17/rotation = Quaternion(-0.11824294, -0.17776872, 0.80557114, 0.55269533)
|
||||
bones/18/rotation = Quaternion(0.5305965, -0.28927496, 0.76720744, -0.21489605)
|
||||
bones/20/position = Vector3(0.22012731, 0.38421977, 0.36399037)
|
||||
bones/21/position = Vector3(-0.23671798, 0.052281797, -0.027087089)
|
||||
bones/21/rotation = Quaternion(0.5078295, -0.4920459, -0.4920459, 0.50782955)
|
||||
bones/22/position = Vector3(-0.39721552, 0.31719273, 0.3595722)
|
||||
bones/23/position = Vector3(-0.9167187, 1.3206767, 0.42621902)
|
||||
bones/23/rotation = Quaternion(0.9993525, -0.0021175682, 0.03502641, -0.00795782)
|
||||
bones/24/rotation = Quaternion(0.08874816, -0.018719967, -0.04671622, 0.99478185)
|
||||
bones/25/rotation = Quaternion(0.09634846, -0.0268489, -0.04050248, 0.9941608)
|
||||
|
||||
[node name="matador" parent="Matador/Armature/Skeleton3D" index="0" unique_id=593562242]
|
||||
transform = Transform3D(0.8642424, 0, 0.50307554, 0, 1, 0, -0.50307554, 0, 0.8642424, 0, 0, 0)
|
||||
|
||||
[node name="Muleta" parent="Matador/Armature/Skeleton3D" index="1" unique_id=978680467]
|
||||
cast_shadow = 0
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="." unique_id=1531255459]
|
||||
transform = Transform3D(0.42176014, 0.2362673, 0.8753835, -0.10687317, 0.97167695, -0.21076548, -0.900387, -0.0046625203, 0.4350652, 8.41945, 0.17132203, 2.0652685)
|
||||
fov = 41.6
|
||||
near = 0.001
|
||||
|
||||
[node name="arena model2026" parent="." unique_id=179544183 instance=ExtResource("3_5jr0i")]
|
||||
transform = Transform3D(-0.83746713, 0, 0.54648757, 0, 0.99999994, 0, -0.54648757, 0, -0.83746713, 3.8733478, -0.6, -1.1080065)
|
||||
|
||||
[node name="arena_placeholder_v01" parent="." unique_id=1343590504 instance=ExtResource("3_1v6n4")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.3344436, 0, -1.5401263)
|
||||
visible = false
|
||||
|
||||
[node name="StaticBody3D" type="StaticBody3D" parent="arena_placeholder_v01" unique_id=340133176]
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="arena_placeholder_v01/StaticBody3D" unique_id=201484167]
|
||||
transform = Transform3D(-33.265, 4.9526625e-07, -2.9081186e-06, 5.0228755e-06, 3.28, 0, -2.9081186e-06, 4.329755e-14, 33.265, 0, -3.3065948, 0)
|
||||
shape = SubResource("CylinderShape3D_eicjn")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=660229295]
|
||||
transform = Transform3D(0.9491592, 0.31479403, -0.0014368258, -0.28033537, 0.84731936, 0.45106864, 0.14321098, -0.4277331, 0.89248836, 1.1162033, 7.3956842, -4.480528)
|
||||
light_energy = 1.32
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.689
|
||||
|
||||
[node name="DirectionalLight3D2" type="DirectionalLight3D" parent="." unique_id=498871251]
|
||||
transform = Transform3D(0.835524, -0.5376153, 0.11344351, -0.48260456, -0.6193575, 0.6192651, -0.26266432, -0.572159, -0.7769435, 1.1162033, 7.3956842, -4.480528)
|
||||
visible = false
|
||||
light_energy = 0.415
|
||||
light_indirect_energy = 16.0
|
||||
light_volumetric_fog_energy = 1.11
|
||||
shadow_blur = 10.0
|
||||
|
||||
[node name="Player" parent="." unique_id=165510044 instance=ExtResource("4_eicjn")]
|
||||
transform = Transform3D(0.9563367, 0, 0.29226705, 0, 1, 0, -0.29226705, 0, 0.9563367, 3.0920272, 0.39692497, -4.302477)
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=114793752]
|
||||
environment = SubResource("Environment_5jr0i")
|
||||
camera_attributes = SubResource("CameraAttributesPractical_5jr0i")
|
||||
|
||||
[node name="SpotLight3D" type="SpotLight3D" parent="." unique_id=1428020323]
|
||||
transform = Transform3D(0.94930077, -0.05846006, -0.30888584, 0.21308771, 0.8420559, 0.4955155, 0.23113126, -0.53621286, 0.81182146, -20.807917, 10.690277, 20.135067)
|
||||
visible = false
|
||||
light_energy = 16.0
|
||||
light_volumetric_fog_energy = 16.0
|
||||
shadow_enabled = true
|
||||
spot_range = 84.316696
|
||||
|
||||
[editable path="Matador"]
|
||||
+7
-8
@@ -1,6 +1,6 @@
|
||||
[gd_scene format=3 uid="uid://matador_scene_v1"]
|
||||
[gd_scene format=3 uid="uid://d0te4mwbh33ag"]
|
||||
|
||||
[ext_resource type="Script" path="res://matador.gd" id="1_matgd"]
|
||||
[ext_resource type="Script" uid="uid://bvfa7xi0luysk" path="res://matador.gd" id="1_matgd"]
|
||||
[ext_resource type="PackedScene" uid="uid://eu2lqjhowj4t" path="res://Assets/Matador.glb" id="2_matfbx"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_body"]
|
||||
@@ -11,19 +11,18 @@ height = 1.2
|
||||
radius = 0.45
|
||||
height = 1.4
|
||||
|
||||
[node name="Matador" type="CharacterBody3D"]
|
||||
[node name="Matador" type="CharacterBody3D" unique_id=1781857630]
|
||||
script = ExtResource("1_matgd")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=2101651042]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.85, 0)
|
||||
shape = SubResource("CapsuleShape3D_body")
|
||||
|
||||
[node name="HitArea" type="Area3D" parent="."]
|
||||
monitoring = true
|
||||
[node name="HitArea" type="Area3D" parent="." unique_id=745037545]
|
||||
monitorable = false
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="HitArea"]
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="HitArea" unique_id=1497356275]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.85, 0)
|
||||
shape = SubResource("CapsuleShape3D_hit")
|
||||
|
||||
[node name="matador2" parent="." instance=ExtResource("2_matfbx")]
|
||||
[node name="matador2" parent="." unique_id=1487256381 instance=ExtResource("2_matfbx")]
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
[gd_resource type="StandardMaterial3D" format=3 uid="uid://b73nb47y8ppt"]
|
||||
|
||||
[resource]
|
||||
albedo_color = Color(0.26098922, 0.27367952, 0.27059656, 1)
|
||||
metallic = 1.0
|
||||
@@ -0,0 +1,14 @@
|
||||
shader_type spatial;
|
||||
|
||||
void vertex() {
|
||||
// Called for every vertex the material is visible on.
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
// Called for every pixel the material is visible on.
|
||||
}
|
||||
|
||||
//void light() {
|
||||
// // Called for every pixel for every light affecting the material.
|
||||
// // Uncomment to replace the default light processing function with this one.
|
||||
//}
|
||||
@@ -0,0 +1 @@
|
||||
uid://bme1rkldtyrhu
|
||||
@@ -0,0 +1,4 @@
|
||||
[gd_resource type="StandardMaterial3D" format=3 uid="uid://isrp2y47xs5x"]
|
||||
|
||||
[resource]
|
||||
albedo_color = Color(0.49425018, 0.31969637, 0.21259204, 1)
|
||||
@@ -0,0 +1,5 @@
|
||||
[gd_resource type="StandardMaterial3D" format=3 uid="uid://blpkmyikjnhbo"]
|
||||
|
||||
[resource]
|
||||
emission_enabled = true
|
||||
emission = Color(0.4627451, 0.8117647, 0.9490196, 1)
|
||||
@@ -0,0 +1,5 @@
|
||||
[gd_resource type="StandardMaterial3D" format=3 uid="uid://dgmk764033feq"]
|
||||
|
||||
[resource]
|
||||
emission_enabled = true
|
||||
emission = Color(0.7096375, 0.3347874, 0.09943161, 1)
|
||||
+32
-45
@@ -4,30 +4,18 @@
|
||||
[ext_resource type="Script" uid="uid://cpyq2r5cq653g" path="res://camera_iso.gd" id="2_camera_iso"]
|
||||
[ext_resource type="PackedScene" uid="uid://bun14xmk20pcj" path="res://Assets/bull.fbx" id="4_e80uo"]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_chest"]
|
||||
radius = 0.35
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_belly"]
|
||||
radius = 0.4
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_hips"]
|
||||
radius = 0.3
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_kne1u"]
|
||||
radius = 0.7495117
|
||||
height = 1.845398
|
||||
|
||||
[node name="Player" type="CharacterBody3D" unique_id=165510044]
|
||||
collision_layer = 3
|
||||
collision_layer = 2
|
||||
collision_mask = 9
|
||||
script = ExtResource("1_xhfnw")
|
||||
|
||||
[node name="CollisionChest" type="CollisionShape3D" parent="." unique_id=447032296]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.505, -0.2)
|
||||
shape = SubResource("SphereShape3D_chest")
|
||||
|
||||
[node name="CollisionBelly" type="CollisionShape3D" parent="." unique_id=571780801]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.505, 0.1)
|
||||
shape = SubResource("SphereShape3D_belly")
|
||||
|
||||
[node name="CollisionHips" type="CollisionShape3D" parent="." unique_id=717874116]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.505, 0.4)
|
||||
shape = SubResource("SphereShape3D_hips")
|
||||
[node name="CollisionBull" type="CollisionShape3D" parent="." unique_id=571780801]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.29183745, 0.3197594)
|
||||
shape = SubResource("CapsuleShape3D_kne1u")
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="." unique_id=1120161087]
|
||||
script = ExtResource("2_camera_iso")
|
||||
@@ -35,31 +23,30 @@ script = ExtResource("2_camera_iso")
|
||||
[node name="bull" parent="." unique_id=1386495166 instance=ExtResource("4_e80uo")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.655, 0.23)
|
||||
|
||||
[node name="Skeleton3D" parent="bull/Armature" parent_id_path=PackedInt32Array(1386495166, 547304299) index="0" unique_id=2096877109]
|
||||
[node name="Skeleton3D" parent="bull/Armature" parent_id_path=PackedInt32Array(1386495166, 1942410469) index="0" unique_id=550138996]
|
||||
bones/0/position = Vector3(0, 0, 0.009963839)
|
||||
bones/0/rotation = Quaternion(-0.733504, -0.0036974847, 0.0013620416, -0.67967373)
|
||||
bones/0/scale = Vector3(1, 0.99999994, 0.99999994)
|
||||
bones/1/position = Vector3(0.0035266252, -0.0043296535, 0.0040827994)
|
||||
bones/1/rotation = Quaternion(0.020680686, 0.45675468, 0.8716418, -0.1766016)
|
||||
bones/2/rotation = Quaternion(0.3289326, -0.03432299, -0.06047997, 0.94178957)
|
||||
bones/4/position = Vector3(0.0045358227, -0.0021376952, -0.004238624)
|
||||
bones/4/rotation = Quaternion(-0.2448651, -0.018126775, 0.96885973, -0.0319902)
|
||||
bones/4/scale = Vector3(1.0000001, 1, 1.0000001)
|
||||
bones/5/rotation = Quaternion(-0.7492961, -0.32333943, -0.24235487, 0.5246629)
|
||||
bones/5/scale = Vector3(1, 1, 1)
|
||||
bones/6/rotation = Quaternion(0.32210493, 0.15572408, 0.14126852, 0.9230611)
|
||||
bones/6/scale = Vector3(0.9999998, 1, 1)
|
||||
bones/17/position = Vector3(-2.3283064e-12, 0.0009373817, 0.007552617)
|
||||
bones/17/rotation = Quaternion(-5.3357535e-08, 0.7071068, 0.7071067, -5.3357535e-08)
|
||||
bones/19/position = Vector3(-0.0035266252, -0.0043296525, 0.0040827994)
|
||||
bones/19/rotation = Quaternion(0.07793758, -0.2513099, 0.94914854, 0.1728764)
|
||||
bones/20/rotation = Quaternion(-0.3791731, -0.08821739, 0.07153107, 0.91832936)
|
||||
bones/22/position = Vector3(-0.0045358227, -0.0021376943, -0.004238624)
|
||||
bones/22/rotation = Quaternion(0.20629132, 0.46411392, 0.84344316, 0.17506008)
|
||||
bones/22/scale = Vector3(1.0000001, 1.0000001, 1.0000001)
|
||||
bones/23/rotation = Quaternion(-0.7287124, 0.31838557, 0.209407, 0.5689971)
|
||||
bones/23/scale = Vector3(1.0000001, 1.0000002, 1.0000002)
|
||||
bones/24/rotation = Quaternion(0.71033937, -0.13944183, -0.049755, 0.6881123)
|
||||
bones/24/scale = Vector3(0.9999999, 1, 1.0000001)
|
||||
bones/0/rotation = Quaternion(0.7071068, 0, 0, 0.7071067)
|
||||
bones/0/scale = Vector3(1, 1, 1)
|
||||
bones/1/position = Vector3(0.003526625, -0.0043296535, 0.0040827994)
|
||||
bones/1/rotation = Quaternion(-0.00038647873, 0.06909673, 0.9868542, -0.14609687)
|
||||
bones/2/rotation = Quaternion(-0.06929122, 3.2175163e-07, -0.112670615, 0.99121344)
|
||||
bones/4/position = Vector3(0.0045358227, -0.002137695, -0.004238624)
|
||||
bones/4/rotation = Quaternion(-0.24948503, 0.19590352, 0.9416978, -0.11217985)
|
||||
bones/4/scale = Vector3(1.0000001, 0.9999999, 1.0000001)
|
||||
bones/5/rotation = Quaternion(-0.58943665, -0.3660725, -0.22564478, 0.683842)
|
||||
bones/5/scale = Vector3(1, 1.0000001, 0.99999994)
|
||||
bones/6/rotation = Quaternion(0.52910197, 0.15997827, 0.120245, 0.8246207)
|
||||
bones/6/scale = Vector3(1, 1, 1.0000001)
|
||||
bones/17/position = Vector3(0, 0.0009373814, 0.007552617)
|
||||
bones/17/rotation = Quaternion(-9.4156974e-08, 0.7071068, 0.7071067, -9.4156974e-08)
|
||||
bones/19/position = Vector3(-0.003526625, -0.0043296535, 0.0040827994)
|
||||
bones/19/rotation = Quaternion(0.00038647873, 0.06909673, 0.9868542, 0.14609687)
|
||||
bones/20/rotation = Quaternion(-0.06929122, -3.2227587e-07, 0.11267061, 0.99121344)
|
||||
bones/22/position = Vector3(-0.0045358227, -0.002137695, -0.004238624)
|
||||
bones/22/rotation = Quaternion(0.24948503, 0.19590352, 0.9416978, 0.11217985)
|
||||
bones/23/rotation = Quaternion(-0.58943665, 0.3660725, 0.22564478, 0.683842)
|
||||
bones/23/scale = Vector3(1, 1.0000001, 1)
|
||||
bones/24/rotation = Quaternion(0.529102, -0.15997836, -0.120245025, 0.82462066)
|
||||
bones/24/scale = Vector3(1, 1.0000001, 1)
|
||||
|
||||
[editable path="bull"]
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
[gd_scene format=3 uid="uid://c8spearwrap01"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://jepc74w8opbu" path="res://Assets/spear.glb" id="1_spearglb"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_shaft"]
|
||||
radius = 0.13
|
||||
height = 2.2
|
||||
|
||||
[node name="Spear" type="Node3D"]
|
||||
|
||||
[node name="spear" parent="." instance=ExtResource("1_spearglb")]
|
||||
|
||||
[node name="HitShape" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 0, 0.79)
|
||||
shape = SubResource("CapsuleShape3D_shaft")
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
[gd_scene format=3 uid="uid://c8swordwrap01"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://xyvank512l5n" path="res://Assets/sword.glb" id="1_swordglb"]
|
||||
[ext_resource type="Script" path="res://hitbox.gd" id="2_hitbox"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_blade"]
|
||||
radius = 0.18
|
||||
height = 1.3
|
||||
|
||||
[node name="Sword" type="Node3D"]
|
||||
|
||||
[node name="sword" parent="." instance=ExtResource("1_swordglb")]
|
||||
|
||||
[node name="BladeHitbox" type="Area3D" parent="."]
|
||||
script = ExtResource("2_hitbox")
|
||||
damage_cause = "gored"
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="BladeHitbox"]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 0, 0.8)
|
||||
shape = SubResource("CapsuleShape3D_blade")
|
||||
BIN
Binary file not shown.
@@ -8,5 +8,5 @@ script="rider-plugin.gd"
|
||||
|
||||
[presets]
|
||||
|
||||
active="off"
|
||||
active="on"
|
||||
presets="presets.json"
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
uid://cn7fhjkro7637
|
||||
@@ -1,9 +0,0 @@
|
||||
extends Camera3D
|
||||
|
||||
|
||||
@export var spring_arm: Node3D
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
var lerp_power: float = DP.f("cam_lerp_power")
|
||||
position = position.lerp(spring_arm.position, delta * lerp_power)
|
||||
@@ -1 +0,0 @@
|
||||
uid://b720l6m0ehrj3
|
||||
+24
-3
@@ -1,3 +1,4 @@
|
||||
class_name IsoCamera
|
||||
extends Camera3D
|
||||
|
||||
@export var height: float = 25.0
|
||||
@@ -16,6 +17,11 @@ var _shake_amount: float = 0.0
|
||||
var _shake_decay: float = 0.0
|
||||
var _user_fov: float = 0.0
|
||||
|
||||
# Per-level framing multiplier: 1.0 = the designer's base shot, >1 dollies the camera
|
||||
# back for a wider view (the lobby uses this). Set by game_shell when a level loads;
|
||||
# kept separate from the scroll-wheel FOV zoom so the two don't fight.
|
||||
var _framing_scale: float = 1.0
|
||||
|
||||
# Trailing-camera state: _focus is the smoothed point the camera frames (it lags
|
||||
# the bull), _drag_offset is the velocity-driven trail that slides it behind.
|
||||
var _focus: Vector3 = Vector3.ZERO
|
||||
@@ -42,15 +48,30 @@ func _unhandled_input(event: InputEvent) -> void:
|
||||
_user_fov = clamp(_user_fov * 1.1, fov_min, fov_max)
|
||||
|
||||
|
||||
# Pinch-to-zoom hook for the touch UI. `ratio` is the two-finger spread this frame over
|
||||
# last frame: >1 (fingers parting) narrows the FOV to zoom in, <1 widens it to pull back,
|
||||
# mirroring the scroll-wheel zoom_in/zoom_out feel.
|
||||
func adjust_zoom(ratio: float) -> void:
|
||||
if ratio <= 0.0:
|
||||
return
|
||||
_user_fov = clampf(_user_fov / ratio, fov_min, fov_max)
|
||||
|
||||
|
||||
## Dolly the camera in/out for the level being loaded. 1.0 is the base framing; >1 pulls
|
||||
## back for a wider shot (the lobby hub uses this). Independent of the scroll-wheel zoom.
|
||||
func set_framing_scale(scale: float) -> void:
|
||||
_framing_scale = maxf(scale, 0.1)
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
fov = lerpf(fov, _user_fov, delta * 8.0)
|
||||
|
||||
var angle_rad := deg_to_rad(horizontal_angle_deg)
|
||||
|
||||
var offset := Vector3(
|
||||
sin(angle_rad) * horizontal_distance,
|
||||
height,
|
||||
cos(angle_rad) * horizontal_distance
|
||||
sin(angle_rad) * horizontal_distance * _framing_scale,
|
||||
height * _framing_scale,
|
||||
cos(angle_rad) * horizontal_distance * _framing_scale
|
||||
)
|
||||
|
||||
var target := get_parent() as Node3D
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
extends Node3D
|
||||
|
||||
@onready var spring_arm: SpringArm3D = $SpringArm3D
|
||||
var _desired_length: float = 7.0
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
|
||||
_desired_length = DP.f("cam_spring_length")
|
||||
spring_arm.spring_length = _desired_length
|
||||
|
||||
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
var sensitivity: float = DP.f("cam_sensitivity")
|
||||
var min_vert: float = deg_to_rad(DP.f("cam_min_vert_angle"))
|
||||
var max_vert: float = deg_to_rad(DP.f("cam_max_vert_angle"))
|
||||
var min_zoom: float = DP.f("cam_min_zoom")
|
||||
var max_zoom: float = DP.f("cam_max_zoom")
|
||||
|
||||
if event is InputEventMouseMotion:
|
||||
rotation.y -= event.relative.x * sensitivity
|
||||
rotation.y = wrapf(rotation.y, 0.0, TAU)
|
||||
rotation.x -= event.relative.y * sensitivity
|
||||
rotation.x = clamp(rotation.x, min_vert, max_vert)
|
||||
|
||||
if event.is_action_pressed("zoom_in"):
|
||||
_desired_length = clamp(_desired_length / 1.2, min_zoom, max_zoom)
|
||||
if event.is_action_pressed("zoom_out"):
|
||||
_desired_length = clamp(_desired_length * 1.2, min_zoom, max_zoom)
|
||||
|
||||
if event.is_action_pressed("toggle_mouse_capture"):
|
||||
if Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
|
||||
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
|
||||
else:
|
||||
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
spring_arm.spring_length = _desired_length
|
||||
@@ -1 +0,0 @@
|
||||
uid://b4td4k8yo5y78
|
||||
+29
-2
@@ -18,6 +18,8 @@ const _COMMANDS := {
|
||||
"diff": "list params changed from default",
|
||||
"toggle": "flip a bool param",
|
||||
"list": "print params (optional section)",
|
||||
"level": "select level and reload (level <id> — arena / arena_boss / bear)",
|
||||
"restart": "reload the current level scene",
|
||||
"clear": "clear the log",
|
||||
"help": "show this help",
|
||||
}
|
||||
@@ -472,6 +474,12 @@ func _run_command(parts: PackedStringArray) -> bool:
|
||||
_cmd_diff()
|
||||
"list":
|
||||
_cmd_list(parts)
|
||||
"level":
|
||||
_cmd_level(parts)
|
||||
"restart":
|
||||
_log_ok("Restarting…")
|
||||
get_tree().paused = false
|
||||
get_tree().reload_current_scene()
|
||||
"clear":
|
||||
_log.clear()
|
||||
"help":
|
||||
@@ -581,9 +589,9 @@ func _set_param(key: String, meta: Dictionary, raw: String) -> void:
|
||||
var lo := meta["min"] as float
|
||||
var hi := meta["max"] as float
|
||||
if not raw.is_valid_float() or not is_finite(raw.to_float()):
|
||||
_log_warn("%s wants a number %s … %s" % [key, _fmt_num(lo), _fmt_num(hi)])
|
||||
_log_warn("%s wants a number" % key)
|
||||
return
|
||||
var v := snappedf(clampf(raw.to_float(), lo, hi), meta["step"] as float)
|
||||
var v := raw.to_float()
|
||||
DP.set_value(key, v)
|
||||
_log_ok("[b]%s[/b] ← [color=#ffe080]%s[/color]" % [key, _fmt_num(v)])
|
||||
elif meta["type"] == TYPE_BOOL:
|
||||
@@ -600,6 +608,25 @@ func _set_param(key: String, meta: Dictionary, raw: String) -> void:
|
||||
_log_warn("Cannot set param of type %d" % meta["type"])
|
||||
|
||||
|
||||
func _cmd_level(parts: PackedStringArray) -> void:
|
||||
if parts.size() == 1:
|
||||
var cur := Run.active_level()
|
||||
var cur_name := (cur.id as String) if cur != null else "none"
|
||||
_log_ok("Current level: [b]%s[/b]" % cur_name)
|
||||
var ids: Array[StringName] = Run.level_ids()
|
||||
_log_raw("Available: " + " ".join(ids.map(func(id: StringName) -> String: return str(id))))
|
||||
return
|
||||
var id := StringName(parts[1].to_lower())
|
||||
var level := Run.get_level(id)
|
||||
if level == null:
|
||||
_log_warn("Unknown level '%s'. Try: %s" % [parts[1], " ".join(Run.level_ids().map(func(i: StringName) -> String: return str(i)))])
|
||||
return
|
||||
Run.debug_level_override = level
|
||||
_log_ok("Level set to [b]%s[/b] — reloading…" % str(id))
|
||||
get_tree().paused = false
|
||||
get_tree().change_scene_to_file(level.scene_path)
|
||||
|
||||
|
||||
func _cmd_list(parts: PackedStringArray) -> void:
|
||||
var filter := parts[1].to_lower() if parts.size() > 1 else ""
|
||||
var all := DP.get_all()
|
||||
|
||||
+83
-6
@@ -25,19 +25,96 @@ func _ready() -> void:
|
||||
load_saved()
|
||||
|
||||
|
||||
# ── Web fullscreen + landscape lock ─────────────────────────────────────────────
|
||||
# Browsers only allow requestFullscreen / screen.orientation.lock from inside a user
|
||||
# gesture, so we piggyback on the first tap/click of the web build to go fullscreen and
|
||||
# lock to landscape. One-shot; input still flows to the menu/game normally (never consumed).
|
||||
var _fs_triggered: bool = false
|
||||
|
||||
|
||||
func _input(event: InputEvent) -> void:
|
||||
if _fs_triggered or not OS.has_feature("web"):
|
||||
return
|
||||
var gesture := (event is InputEventScreenTouch and (event as InputEventScreenTouch).pressed) \
|
||||
or (event is InputEventMouseButton and (event as InputEventMouseButton).pressed)
|
||||
if gesture:
|
||||
_fs_triggered = true
|
||||
request_fullscreen_landscape()
|
||||
|
||||
|
||||
## Enter browser fullscreen and lock to landscape. Must be called from a user-gesture
|
||||
## context (first tap, or a button press). No-op off web. Android Chrome/Brave honour the
|
||||
## orientation lock; iOS Safari ignores it (unsupported), so the .catch() swallows the reject.
|
||||
func request_fullscreen_landscape() -> void:
|
||||
if not OS.has_feature("web"):
|
||||
return
|
||||
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
|
||||
JavaScriptBridge.eval(
|
||||
"(function(){function l(){try{if(screen.orientation&&screen.orientation.lock)"
|
||||
+ "screen.orientation.lock('landscape').catch(function(){});}catch(e){}}"
|
||||
+ "l();document.addEventListener('fullscreenchange',l,{once:true});})()", true)
|
||||
|
||||
|
||||
## Whether to drive the game with the on-screen touch UI (joystick + buttons)
|
||||
## instead of keyboard hints. DisplayServer.is_touchscreen_available() can't be
|
||||
## used here: `emulate_touch_from_mouse` (on for desktop testing) makes it report
|
||||
## true on every desktop. Gate on the actual runtime platform instead — real
|
||||
## mobile/native and mobile web browsers — plus the DP force flag for testing.
|
||||
## instead of keyboard hints. Platform detection is cached (it can't change mid-run)
|
||||
## so the per-frame/per-input callers don't repay the cost — but the DP force flag is
|
||||
## re-read every call so the console can toggle the layout live on a desktop build.
|
||||
var _touch_ui_cached: int = -1 # -1 = not yet detected, 0 = false, 1 = true
|
||||
|
||||
|
||||
func use_touch_ui() -> bool:
|
||||
if DP.b("force_touch_controls"):
|
||||
return true
|
||||
return (
|
||||
if _touch_ui_cached == -1:
|
||||
_touch_ui_cached = 1 if _detect_touch_ui() else 0
|
||||
return _touch_ui_cached == 1
|
||||
|
||||
|
||||
## True only on touch-primary devices (phones, tablets). Detection is deliberately
|
||||
## conservative so a desktop never gets the on-screen thumb UI.
|
||||
##
|
||||
## DisplayServer.is_touchscreen_available() is unusable here on two fronts: on native
|
||||
## desktop `emulate_touch_from_mouse` (on for testing) forces it true, and on the web build
|
||||
## it maps to `'ontouchstart' in window`, which desktop Chromium reports true even with no
|
||||
## touchscreen. So on web we ask the browser two questions instead: does it report touch
|
||||
## points, AND is the *primary* pointer coarse? A desktop-with-mouse (even a touch laptop)
|
||||
## answers no to the second and keeps the desktop HUD; a phone/tablet answers yes to both.
|
||||
## maxTouchPoints also catches iPadOS, which masquerades as desktop Safari.
|
||||
func _detect_touch_ui() -> bool:
|
||||
if (
|
||||
OS.has_feature("mobile")
|
||||
or OS.has_feature("web_android")
|
||||
or OS.has_feature("web_ios")
|
||||
)
|
||||
):
|
||||
return true
|
||||
if not OS.has_feature("web"):
|
||||
return false
|
||||
var js := "(navigator.maxTouchPoints > 0) && window.matchMedia('(pointer: coarse)').matches"
|
||||
var touch_primary: Variant = JavaScriptBridge.eval(js, true)
|
||||
if touch_primary is bool:
|
||||
return touch_primary
|
||||
if touch_primary is int or touch_primary is float:
|
||||
return int(touch_primary) != 0
|
||||
return false
|
||||
|
||||
|
||||
## Whether on-screen debug overlays (touch state + render diagnostics) should show. True on
|
||||
## the DP "touch_debug" flag, or — so it can be switched on from a phone where no console is
|
||||
## reachable — when the page URL carries a `debug` query param (append `?debug=1`).
|
||||
var _url_debug: int = -1
|
||||
|
||||
|
||||
func debug_overlay() -> bool:
|
||||
if DP.b("touch_debug"):
|
||||
return true
|
||||
if _url_debug == -1:
|
||||
_url_debug = 0
|
||||
if OS.has_feature("web"):
|
||||
var has: Variant = JavaScriptBridge.eval(
|
||||
"String(window.location.search).indexOf('debug') >= 0", true)
|
||||
if (has is bool and has) or ((has is int or has is float) and int(has) != 0):
|
||||
_url_debug = 1
|
||||
return _url_debug == 1
|
||||
|
||||
|
||||
## Returns the first keyboard event bound to an action, or null.
|
||||
|
||||
+37
-55
@@ -1,19 +1,16 @@
|
||||
extends MultiMeshInstance3D
|
||||
## A whole stand of cheering spectators rendered as camera-facing billboards in a
|
||||
## single draw call — the performant replacement for dozens of skinned crowd skeletons.
|
||||
## The sprite sheet is baked from the existing crowd figure by tools/bake_crowd_sheet.gd.
|
||||
## A whole stand of cheering spectators rendered as flat billboards in a single draw
|
||||
## call — the performant replacement for dozens of skinned crowd skeletons. The sprite
|
||||
## sheet is baked from the existing crowd figure by tools/bake_crowd_sheet.gd.
|
||||
##
|
||||
## Placement mirrors an existing crowd node (default: the sibling PublikNode) so the
|
||||
## billboards land exactly where the crowd was authored; if that node is missing it
|
||||
## falls back to a generated tribune so the scene still populates.
|
||||
## Placement comes from CrowdMarker nodes the designer drops into the level (collected
|
||||
## via the &"crowd_marker" group): each marker gives one spectator its world position and
|
||||
## a chosen facing (one of six 60°-spaced headings). If no markers are present the scene
|
||||
## falls back to a generated tribune so it still populates.
|
||||
|
||||
const SHEET_PATH := "res://Assets/crowd_clap_sheet.png"
|
||||
const SHADER_PATH := "res://crowd_billboard.gdshader"
|
||||
|
||||
## Node whose descendant figures (names starting with `figure_prefix`) donate their
|
||||
## world positions. Empty = use the generated fallback stand.
|
||||
@export var source_path: NodePath = ^"../PublikNode"
|
||||
@export var figure_prefix: String = "mees"
|
||||
## World height of a spectator billboard, in metres. Sheet aspect sets the width.
|
||||
@export var figure_height: float = 2.0
|
||||
@export var frames: int = 8
|
||||
@@ -36,7 +33,8 @@ var _rng := RandomNumberGenerator.new()
|
||||
|
||||
func _ready() -> void:
|
||||
_rng.seed = hash("bullosseum-crowd") # deterministic layout/phases across runs
|
||||
_build()
|
||||
# Deferred so every CrowdMarker has run _ready and joined the group before we harvest.
|
||||
_build.call_deferred()
|
||||
|
||||
|
||||
func _build() -> void:
|
||||
@@ -58,71 +56,53 @@ func _build() -> void:
|
||||
mat.set_shader_parameter("fps", clap_fps)
|
||||
material_override = mat
|
||||
|
||||
var seats := _seat_positions()
|
||||
var center := _arena_center(seats)
|
||||
# Each seat is a (global feet-position, unit forward) pair.
|
||||
var positions := PackedVector3Array()
|
||||
var facings: Array[Vector3] = []
|
||||
_collect_seats(positions, facings)
|
||||
|
||||
var mm := MultiMesh.new()
|
||||
mm.transform_format = MultiMesh.TRANSFORM_3D
|
||||
mm.use_custom_data = true
|
||||
mm.mesh = quad
|
||||
mm.instance_count = seats.size()
|
||||
mm.instance_count = positions.size()
|
||||
|
||||
for i in seats.size():
|
||||
for i in positions.size():
|
||||
var s := 1.0 + _rng.randf_range(-0.06, 0.06) # slight height variety
|
||||
mm.set_instance_transform(i, Transform3D(_facing_basis(seats[i], center, s), seats[i]))
|
||||
mm.set_instance_transform(i, Transform3D(_upright_basis(facings[i], s), positions[i]))
|
||||
var b := 1.0 + _rng.randf_range(-tint_variation, tint_variation)
|
||||
mm.set_instance_custom_data(i, Color(_rng.randf(), b, b * 0.99, b * 0.98))
|
||||
multimesh = mm
|
||||
|
||||
|
||||
# Orientation for a seat: the sprite's forward (+Z, the quad's face) points horizontally
|
||||
# inward at the arena centre, so each ring segment faces the action instead of the
|
||||
# camera. Upright (world +Y), uniformly scaled by `s`.
|
||||
func _facing_basis(seat: Vector3, center: Vector3, s: float) -> Basis:
|
||||
var look := center - seat
|
||||
# Upright basis whose forward (+Z, the quad's face) points along `look`, uniformly
|
||||
# scaled by `s`. World +Y stays up so spectators never tilt.
|
||||
func _upright_basis(look: Vector3, s: float) -> Basis:
|
||||
look.y = 0.0
|
||||
look = look.normalized() if look.length() > 0.001 else Vector3(0.0, 0.0, -1.0)
|
||||
look = look.normalized() if look.length() > 0.001 else Vector3(0.0, 0.0, 1.0)
|
||||
var up := Vector3.UP
|
||||
var right := up.cross(look).normalized()
|
||||
var basis := Basis()
|
||||
basis.x = right
|
||||
basis.x = up.cross(look).normalized()
|
||||
basis.y = up
|
||||
basis.z = look
|
||||
return basis.scaled(Vector3.ONE * s)
|
||||
|
||||
|
||||
# Horizontal centre the crowd faces — the mean of the seat positions (the ring/stand
|
||||
# centroid), which for an arena crowd is the middle of the pitch.
|
||||
func _arena_center(seats: PackedVector3Array) -> Vector3:
|
||||
if seats.is_empty():
|
||||
return global_position
|
||||
var sum := Vector3.ZERO
|
||||
for p in seats:
|
||||
sum += p
|
||||
return sum / float(seats.size())
|
||||
# Seats from designer-placed CrowdMarker nodes: each contributes its world position and
|
||||
# its chosen 60°-spaced facing. With no markers present, fall back to a generated ring
|
||||
# that faces inward so the scene still shows a crowd.
|
||||
func _collect_seats(positions: PackedVector3Array, facings: Array[Vector3]) -> void:
|
||||
for node in get_tree().get_nodes_in_group(&"crowd_marker"):
|
||||
var marker := node as Node3D
|
||||
if marker == null or not marker.has_method(&"facing_dir"):
|
||||
continue
|
||||
positions.append(marker.global_position)
|
||||
facings.append(marker.facing_dir())
|
||||
if positions.is_empty():
|
||||
_fallback_stand(positions, facings)
|
||||
|
||||
|
||||
# Global feet-positions for every spectator: harvested from the source crowd if present,
|
||||
# otherwise the generated fallback tribune.
|
||||
func _seat_positions() -> PackedVector3Array:
|
||||
var out := PackedVector3Array()
|
||||
var src := get_node_or_null(source_path)
|
||||
if src != null:
|
||||
_collect_figures(src, out)
|
||||
if out.is_empty():
|
||||
_fallback_stand(out)
|
||||
return out
|
||||
|
||||
|
||||
func _collect_figures(node: Node, out: PackedVector3Array) -> void:
|
||||
if node is Node3D and node != self and (node as Node3D).name.begins_with(figure_prefix):
|
||||
out.append((node as Node3D).global_position)
|
||||
return # don't descend into a figure's own rig
|
||||
for c in node.get_children():
|
||||
_collect_figures(c, out)
|
||||
|
||||
|
||||
func _fallback_stand(out: PackedVector3Array) -> void:
|
||||
func _fallback_stand(positions: PackedVector3Array, facings: Array[Vector3]) -> void:
|
||||
var placed := 0
|
||||
for row in fallback_rows:
|
||||
var radius := fallback_inner_radius + float(row) * fallback_row_step
|
||||
@@ -133,5 +113,7 @@ func _fallback_stand(out: PackedVector3Array) -> void:
|
||||
if placed >= fallback_count:
|
||||
return
|
||||
var ang := TAU * float(s) / float(seats_in_row)
|
||||
out.append(Vector3(cos(ang) * radius, y, sin(ang) * radius))
|
||||
var pos := Vector3(cos(ang) * radius, y, sin(ang) * radius)
|
||||
positions.append(pos)
|
||||
facings.append(-pos) # face the ring centre (origin)
|
||||
placed += 1
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
@tool
|
||||
extends Node3D
|
||||
class_name CrowdMarker
|
||||
## A designer-placed spot for one billboard spectator. Drop these into a level in the
|
||||
## editor; crowd_billboards.gd harvests every marker (via the &"crowd_marker" group) into
|
||||
## its MultiMesh at runtime, using each marker's global position and chosen facing.
|
||||
##
|
||||
## The marker draws a lightweight preview (a slab standing in for the sprite + a forward
|
||||
## arrow) so its position and orientation are visible in the viewport. That preview is
|
||||
## editor-only and never serialised into the scene, so it costs nothing at runtime.
|
||||
|
||||
## The six selectable facings, one every 60° about the Y axis. DEG_0 faces the quad's
|
||||
## front (+Z) along world +Z; increasing values rotate clockwise looking down.
|
||||
enum Orientation {
|
||||
DEG_0,
|
||||
DEG_60,
|
||||
DEG_120,
|
||||
DEG_180,
|
||||
DEG_240,
|
||||
DEG_300,
|
||||
}
|
||||
|
||||
const ORIENTATION_STEPS := 6
|
||||
## Metres — matches crowd_billboards.figure_height so the editor preview reads true to scale.
|
||||
const PREVIEW_HEIGHT := 2.0
|
||||
|
||||
@export var orientation := Orientation.DEG_0:
|
||||
set(value):
|
||||
orientation = value
|
||||
_apply_orientation()
|
||||
|
||||
var _preview: Node3D
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
add_to_group(&"crowd_marker")
|
||||
if Engine.is_editor_hint():
|
||||
_build_preview()
|
||||
_apply_orientation()
|
||||
|
||||
|
||||
# Facing about Y for the current orientation: 0, 60, 120 … degrees as radians.
|
||||
func facing_yaw() -> float:
|
||||
return float(orientation) * (TAU / float(ORIENTATION_STEPS))
|
||||
|
||||
|
||||
# Unit forward the spectator's front (+Z) points along, on the horizontal plane.
|
||||
func facing_dir() -> Vector3:
|
||||
var a := facing_yaw()
|
||||
return Vector3(sin(a), 0.0, cos(a))
|
||||
|
||||
|
||||
func _apply_orientation() -> void:
|
||||
if _preview != null:
|
||||
_preview.rotation = Vector3(0.0, facing_yaw(), 0.0)
|
||||
|
||||
|
||||
# Editor-only preview. Children are added without an owner so they are excluded from the
|
||||
# saved .tscn (Godot only serialises nodes owned by the scene root).
|
||||
func _build_preview() -> void:
|
||||
_preview = Node3D.new()
|
||||
add_child(_preview)
|
||||
|
||||
var aspect := 0.5
|
||||
var slab := MeshInstance3D.new()
|
||||
var quad := QuadMesh.new()
|
||||
quad.size = Vector2(PREVIEW_HEIGHT * aspect, PREVIEW_HEIGHT)
|
||||
quad.center_offset = Vector3(0.0, PREVIEW_HEIGHT * 0.5, 0.0) # stand on the marker
|
||||
slab.mesh = quad
|
||||
slab.material_override = _preview_material(Color(0.3, 0.7, 1.0, 0.35))
|
||||
_preview.add_child(slab)
|
||||
|
||||
var arrow := MeshInstance3D.new()
|
||||
var shaft := BoxMesh.new()
|
||||
shaft.size = Vector3(0.08, 0.08, PREVIEW_HEIGHT * 0.5)
|
||||
arrow.mesh = shaft
|
||||
# Push the shaft out along +Z (the facing) and up to chest height.
|
||||
arrow.position = Vector3(0.0, PREVIEW_HEIGHT * 0.5, PREVIEW_HEIGHT * 0.25)
|
||||
arrow.material_override = _preview_material(Color(1.0, 0.85, 0.2, 0.9))
|
||||
_preview.add_child(arrow)
|
||||
|
||||
|
||||
func _preview_material(col: Color) -> StandardMaterial3D:
|
||||
var mat := StandardMaterial3D.new()
|
||||
mat.albedo_color = col
|
||||
mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
|
||||
mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA
|
||||
mat.cull_mode = BaseMaterial3D.CULL_DISABLED
|
||||
return mat
|
||||
@@ -0,0 +1 @@
|
||||
uid://70j3ks1emhkd
|
||||
+63
-35
@@ -9,7 +9,11 @@ extends Node
|
||||
## bodies get picked up within one interval.
|
||||
##
|
||||
## Toggle from the console:
|
||||
## show_collisions · show_hitboxes · show_bones · show_raycasts (true / false)
|
||||
## show_hitboxes · show_attacks · show_bones · show_raycasts (true / false)
|
||||
## show_hitboxes — the combatants' hurt volumes: each HitArea + the player/enemy body
|
||||
## capsules, drawn as calm translucent-blue volumes (what abilities/blades hit)
|
||||
## show_attacks — the attack hitboxes (bear claw/smash/leap, matador blade, thrown
|
||||
## spear), filled translucent red and shown ONLY while the swing is actually live
|
||||
## show_states — floating AI-state tags + velocity vectors over each matador
|
||||
## show_animation_name — floating current-clip tag over every AnimationPlayer host
|
||||
## show_stats — 2D corner readout: fps / frame ms / draw calls / matador tally
|
||||
@@ -20,13 +24,14 @@ extends Node
|
||||
const REBUILD_INTERVAL := 0.5
|
||||
const STATS_INTERVAL := 0.2 # stats text is re-composed 5×/sec, not every frame
|
||||
|
||||
const COLOR_BODY := Color(0.30, 1.0, 0.45) # collision wireframes (green)
|
||||
const COLOR_AREA := Color(0.0, 0.9, 1.0) # hit-area volumes (cyan, translucent)
|
||||
const COLOR_AREA := Color(0.0, 0.9, 1.0) # combatant hurt volumes (cyan, translucent)
|
||||
const COLOR_ATTACK := Color(1.0, 0.30, 0.15) # attack hitboxes (red, translucent, overlaid)
|
||||
const COLOR_BONE := Color(1.0, 0.35, 0.9) # skeleton bones (magenta)
|
||||
const COLOR_VEL := Color(1.0, 0.85, 0.2) # matador velocity vectors (amber)
|
||||
const COLOR_ANIM := Color(0.55, 0.85, 1.0) # animation-name tags (sky blue)
|
||||
const COLOR_GRID := Color(0.45, 0.45, 0.45, 0.5)
|
||||
const AREA_ALPHA := 0.25
|
||||
const AREA_ALPHA := 0.25
|
||||
const ATTACK_ALPHA := 0.32
|
||||
|
||||
const GRID_HALF := 20 # grid extends ±GRID_HALF cells from the origin
|
||||
const GRID_STEP := 1.0 # metres between grid lines
|
||||
@@ -80,6 +85,7 @@ func ray(from: Vector3, to: Vector3, color: Color = Color.YELLOW) -> void:
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
_reconcile(delta)
|
||||
_pulse_attacks()
|
||||
if DP.b("show_bones"):
|
||||
_draw_bones()
|
||||
if DP.b("show_states"):
|
||||
@@ -359,11 +365,11 @@ func _si(n: int) -> String:
|
||||
# ── Collision / hit-area overlays (incremental) ────────────────────────────────
|
||||
|
||||
func _reconcile(delta: float) -> void:
|
||||
var col := DP.b("show_collisions")
|
||||
var hit := DP.b("show_hitboxes")
|
||||
var atk := DP.b("show_attacks")
|
||||
var bone := DP.b("show_bones")
|
||||
var anim := DP.b("show_animation_name")
|
||||
if not (col or hit or bone or anim):
|
||||
if not (hit or atk or bone or anim):
|
||||
if not _overlays.is_empty():
|
||||
_clear_overlays()
|
||||
_skeletons.clear()
|
||||
@@ -371,7 +377,7 @@ func _reconcile(delta: float) -> void:
|
||||
_prev_flags = ""
|
||||
return
|
||||
|
||||
var flags := "%d%d%d%d" % [int(col), int(hit), int(bone), int(anim)]
|
||||
var flags := "%d%d%d%d" % [int(hit), int(atk), int(bone), int(anim)]
|
||||
_reconcile_t -= delta
|
||||
if flags != _prev_flags: # a toggle just changed — refresh immediately
|
||||
_prev_flags = flags
|
||||
@@ -385,7 +391,7 @@ func _reconcile(delta: float) -> void:
|
||||
var wanted: Dictionary = {}
|
||||
var scene := get_tree().current_scene
|
||||
if scene != null:
|
||||
_collect(scene, col, hit, bone, anim, wanted)
|
||||
_collect(scene, hit, atk, bone, anim, wanted)
|
||||
|
||||
# Drop overlays whose shape is gone or no longer wanted. The overlay is a child of
|
||||
# the collision shape, so it's freed with it — hold it as Variant, since assigning a
|
||||
@@ -401,10 +407,11 @@ func _reconcile(delta: float) -> void:
|
||||
for id: int in wanted:
|
||||
if not _overlays.has(id):
|
||||
var entry: Array = wanted[id]
|
||||
_overlays[id] = _attach(entry[0] as CollisionShape3D, entry[1] as bool)
|
||||
_overlays[id] = _attach(entry[0] as CollisionShape3D, entry[1] as String)
|
||||
|
||||
|
||||
func _collect(node: Node, col: bool, hit: bool, bone: bool, anim: bool, wanted: Dictionary) -> void:
|
||||
func _collect(node: Node, hit: bool, atk: bool, bone: bool, anim: bool,
|
||||
wanted: Dictionary) -> void:
|
||||
# The audience ("public") is ambient decoration, not a debug target — skip the whole
|
||||
# crowd subtree so its clapping AnimationPlayers/skeletons don't flood the overlays.
|
||||
if node.is_in_group(&"public"):
|
||||
@@ -416,15 +423,28 @@ func _collect(node: Node, col: bool, hit: bool, bone: bool, anim: bool, wanted:
|
||||
if node is CollisionShape3D:
|
||||
var cs := node as CollisionShape3D
|
||||
if cs.shape != null and not cs.disabled and _drawable(cs.shape):
|
||||
var parent := cs.get_parent()
|
||||
var is_area := parent is Area3D
|
||||
# Ragdoll bone colliders (PhysicalBone3D) are excluded — use show_bones for
|
||||
# the skeleton; otherwise every corpse floods the view with capsules.
|
||||
var is_body := parent is PhysicsBody3D and not (parent is PhysicalBone3D)
|
||||
if (is_area and hit) or (is_body and col):
|
||||
wanted[cs.get_instance_id()] = [cs, is_area]
|
||||
var kind := _classify(cs.get_parent())
|
||||
var show := (kind == "attack" and atk) or (kind == "hitbox" and hit)
|
||||
if show:
|
||||
wanted[cs.get_instance_id()] = [cs, kind]
|
||||
for child in node.get_children():
|
||||
_collect(child, col, hit, bone, anim, wanted)
|
||||
_collect(child, hit, atk, bone, anim, wanted)
|
||||
|
||||
|
||||
# Sort a shape's owning body/area into an overlay bucket, or "" to skip.
|
||||
# attack — a swing volume (a Hitbox area, or a thrown-spear projectile body)
|
||||
# hitbox — a combatant's hurt volume: its HitArea, or its own body capsule
|
||||
func _classify(parent: Node) -> String:
|
||||
if parent is Hitbox or parent is SpearProjectile:
|
||||
return "attack"
|
||||
if parent is Area3D:
|
||||
return "hitbox"
|
||||
# Ragdoll bone colliders (PhysicalBone3D) are excluded — use show_bones for the
|
||||
# skeleton; otherwise every corpse floods the view with capsules.
|
||||
if parent is PhysicsBody3D and not (parent is PhysicalBone3D):
|
||||
if parent.is_in_group(&"player") or parent.is_in_group(&"matador"):
|
||||
return "hitbox"
|
||||
return ""
|
||||
|
||||
|
||||
# Skip only the unbounded shapes whose debug mesh is meaningless/huge; concave arena
|
||||
@@ -433,20 +453,35 @@ func _drawable(shape: Shape3D) -> bool:
|
||||
return not (shape is WorldBoundaryShape3D or shape is HeightMapShape3D)
|
||||
|
||||
|
||||
func _attach(cs: CollisionShape3D, is_area: bool) -> MeshInstance3D:
|
||||
func _attach(cs: CollisionShape3D, kind: String) -> MeshInstance3D:
|
||||
var mi := MeshInstance3D.new()
|
||||
if is_area:
|
||||
var solid := _solid_mesh(cs.shape)
|
||||
mi.mesh = solid if solid != null else cs.shape.get_debug_mesh()
|
||||
mi.material_override = _translucent_material(COLOR_AREA)
|
||||
var solid := _solid_mesh(cs.shape)
|
||||
mi.mesh = solid if solid != null else cs.shape.get_debug_mesh()
|
||||
if kind == "attack":
|
||||
# Overlaid so a brief swing volume reads clearly on top of the action; its
|
||||
# visibility is pulsed per-frame in _pulse_attacks so it only shows while live.
|
||||
mi.material_override = _translucent_material(COLOR_ATTACK, ATTACK_ALPHA, true)
|
||||
else:
|
||||
mi.mesh = cs.shape.get_debug_mesh()
|
||||
mi.material_override = _wire_material(COLOR_BODY)
|
||||
# The calm translucent-blue volume — depth-tested so it sits in the world.
|
||||
mi.material_override = _translucent_material(COLOR_AREA, AREA_ALPHA, false)
|
||||
mi.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_OFF
|
||||
cs.add_child(mi)
|
||||
return mi
|
||||
|
||||
|
||||
# Attack overlays exist for as long as show_attacks is on, but a swing hitbox is only a
|
||||
# hazard while its Hitbox is monitoring — so show each attack volume only when it's live.
|
||||
# (A thrown spear has no monitoring gate; it stays visible for its whole flight.)
|
||||
func _pulse_attacks() -> void:
|
||||
for id: int in _overlays:
|
||||
var mi: Variant = _overlays[id]
|
||||
if not is_instance_valid(mi):
|
||||
continue
|
||||
var owner := (mi as Node).get_parent().get_parent()
|
||||
if owner is Hitbox:
|
||||
(mi as MeshInstance3D).visible = (owner as Area3D).monitoring
|
||||
|
||||
|
||||
func _clear_overlays() -> void:
|
||||
for id: int in _overlays:
|
||||
var mi: Variant = _overlays[id]
|
||||
@@ -491,19 +526,12 @@ func _line_material() -> StandardMaterial3D:
|
||||
return mat
|
||||
|
||||
|
||||
func _wire_material(color: Color) -> StandardMaterial3D:
|
||||
var mat := StandardMaterial3D.new()
|
||||
mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
|
||||
mat.albedo_color = color
|
||||
mat.no_depth_test = true
|
||||
return mat
|
||||
|
||||
|
||||
func _translucent_material(color: Color) -> StandardMaterial3D:
|
||||
func _translucent_material(color: Color, alpha: float, overlay: bool) -> StandardMaterial3D:
|
||||
var mat := StandardMaterial3D.new()
|
||||
mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
|
||||
mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA
|
||||
mat.albedo_color = Color(color.r, color.g, color.b, AREA_ALPHA)
|
||||
mat.albedo_color = Color(color.r, color.g, color.b, alpha)
|
||||
mat.cull_mode = BaseMaterial3D.CULL_DISABLED
|
||||
mat.depth_draw_mode = BaseMaterial3D.DEPTH_DRAW_DISABLED
|
||||
mat.no_depth_test = overlay
|
||||
return mat
|
||||
|
||||
+205
-41
@@ -17,10 +17,11 @@ var _values: Dictionary = {}
|
||||
|
||||
func _ready() -> void:
|
||||
_register_all()
|
||||
load_saved()
|
||||
|
||||
|
||||
func _register_all() -> void:
|
||||
#Level Unlocking
|
||||
_reg_b("Gate", "gate_unlocked_bear", false)
|
||||
# ── Movement ──────────────────────────────────────────────────────────────
|
||||
# WASD/arrows drive the bull: move_accel ramps flat velocity toward max_speed in
|
||||
# the input direction; move_friction bleeds it off when no direction is held.
|
||||
@@ -38,6 +39,10 @@ func _register_all() -> void:
|
||||
# bull_hit_iframes seconds of invulnerability so a single pass can't drain it.
|
||||
_reg_f("Bull", "bull_max_hp", 10.0, 1.0, 100.0, 1.0)
|
||||
_reg_f("Bull", "bull_hit_iframes", 0.8, 0.0, 3.0, 0.1)
|
||||
# Half-angle (deg) of the bull's horns-first cone: running into an enemy only wounds it when the
|
||||
# bull's velocity points within this of the enemy (not a sideways brush). 90 = any contact at speed.
|
||||
# (The dash ability bypasses this.)
|
||||
_reg_f("Bull", "bull_gore_arc", 75.0, 10.0, 180.0, 5.0)
|
||||
# ── Dust speed thresholds ─────────────────────────────────────────────────
|
||||
_reg_f("Dust", "dust_walk_spd", 1.5, 0.1, 10.0)
|
||||
_reg_f("Dust", "dust_charge_spd", 7.0, 1.0, 20.0)
|
||||
@@ -46,12 +51,12 @@ func _register_all() -> void:
|
||||
_reg_f("Dust", "dust_explosiveness", 0.35, 0.0, 1.0)
|
||||
_reg_f("Dust", "dust_spread", 45.0, 5.0, 90.0)
|
||||
_reg_f("Dust", "dust_gravity_y", -1.5,-15.0, 0.0)
|
||||
_reg_f("Dust", "walk_scale_min", 0.35, 0.05, 3.0)
|
||||
_reg_f("Dust", "walk_scale_max", 0.65, 0.05, 3.0)
|
||||
_reg_f("Dust", "walk_scale_min", 0.20, 0.05, 3.0)
|
||||
_reg_f("Dust", "walk_scale_max", 0.40, 0.05, 3.0)
|
||||
_reg_f("Dust", "walk_vel_min", 0.8, 0.1, 12.0)
|
||||
_reg_f("Dust", "walk_vel_max", 1.8, 0.1, 12.0)
|
||||
_reg_f("Dust", "charge_scale_min", 1.0, 0.05, 6.0)
|
||||
_reg_f("Dust", "charge_scale_max", 2.2, 0.05, 6.0)
|
||||
_reg_f("Dust", "charge_scale_min", 0.35, 0.05, 6.0)
|
||||
_reg_f("Dust", "charge_scale_max", 0.70, 0.05, 6.0)
|
||||
_reg_f("Dust", "charge_vel_min", 2.8, 0.1, 20.0)
|
||||
_reg_f("Dust", "charge_vel_max", 5.5, 0.1, 20.0)
|
||||
# ── Tail ──────────────────────────────────────────────────────────────────
|
||||
@@ -99,16 +104,12 @@ func _register_all() -> void:
|
||||
_reg_f("Camera", "cam_drag_speed", 3.5, 0.5, 20.0)
|
||||
_reg_f("Camera", "cam_follow_lerp", 10.0, 1.0, 40.0)
|
||||
# ── Matador ───────────────────────────────────────────────────────────────
|
||||
_reg_f("Matador", "mat_spawn_count", 1.0, 1.0, 30.0, 1.0)
|
||||
# Hydra split: a slain matador is replaced on the spot by mat_split_factor fresh
|
||||
# matadors, so the horde doubles each generation (1 → 2 → 4 → 8 …) at the default
|
||||
# 2. Capped at mat_split_generations deep so the arena stays winnable (factor <2 or
|
||||
# generations 0 = no splitting, the classic one-and-done arena).
|
||||
_reg_f("Matador", "mat_split_factor", 2.0, 1.0, 6.0, 1.0)
|
||||
_reg_f("Matador", "mat_split_generations", 3.0, 0.0, 6.0, 1.0)
|
||||
# The bull wins outright once it has slain this many matadors, even if the hydra
|
||||
# still has bodies on the sand. 0 = disabled (win only when the horde dies out)
|
||||
_reg_f("Matador", "mat_win_kills", 21.0, 0.0, 200.0, 1.0)
|
||||
# Wave system: matadors enter the arena in escalating waves (1 → 2 → … → N where N
|
||||
# is the number of placed spawn points). mat_spawn_stagger is the delay between each
|
||||
# matador leaping in within a wave; mat_wave_pause is the breather after a wave clears.
|
||||
_reg_f("Matador", "mat_wave_size", 8.0, 1, 50)
|
||||
_reg_f("Matador", "mat_spawn_stagger", 0.4, 0.0, 3.0, 0.05)
|
||||
_reg_f("Matador", "mat_wave_pause", 2.0, 0.0, 8.0, 0.25)
|
||||
_reg_f("Matador", "mat_walk_speed", 5.5, 0.5, 10.0)
|
||||
_reg_f("Matador", "mat_wander_radius", 22.0, 5.0, 50.0)
|
||||
# Radius of the inner fighting floor: bull + matadors spawn on this ring (so
|
||||
@@ -117,6 +118,9 @@ func _register_all() -> void:
|
||||
_reg_f("Matador", "mat_idle_min", 1.2, 0.0, 5.0, 0.1)
|
||||
_reg_f("Matador", "mat_idle_max", 4.0, 0.5, 10.0, 0.1)
|
||||
_reg_f("Matador", "mat_hit_threshold", 4.0, 1.0, 30.0)
|
||||
# Planar reach at which the bull's swept charge path gores a matador (~bull + HitArea radii).
|
||||
# Raise for a more forgiving charge, lower for a more precise one.
|
||||
_reg_f("Matador", "mat_charge_gore_radius", 1.2, 0.5, 3.0, 0.05)
|
||||
_reg_f("Matador", "mat_ragdoll_impulse", 6.0, 0.5, 20.0)
|
||||
# Ragdoll joint limits — lower swing/twist = stiffer corpse that keeps its
|
||||
# shape; higher angular damp settles the flail instead of flopping flat.
|
||||
@@ -139,21 +143,42 @@ func _register_all() -> void:
|
||||
_reg_f("Matador", "mat_attack_range", 8.0, 2.0, 20.0)
|
||||
_reg_f("Matador", "mat_attack_speed", 7.5, 1.0, 12.0)
|
||||
_reg_f("Matador", "mat_attack_duration", 1.8, 0.5, 5.0, 0.1)
|
||||
_reg_f("Matador", "mat_attack_min_dist", 3.2, 0.5, 6.0, 0.1)
|
||||
# Forward drive during the opening of a melee swing — turns the stationary stab
|
||||
# into an estocada lunge so the blade covers ground toward the bull.
|
||||
_reg_f("Matador", "mat_lunge_speed", 13.0, 0.0, 20.0)
|
||||
_reg_f("Matador", "mat_lunge_time", 0.22, 0.0, 0.6, 0.01)
|
||||
# Reach of the reach-based stab (the reliable melee hit) and its re-strike gap.
|
||||
# The bull dies if it comes inside mat_stab_reach of a matador that's attacking,
|
||||
# bracing, or passing with a drawn blade — closing in is genuinely deadly.
|
||||
_reg_f("Matador", "mat_stab_reach", 1.7, 0.5, 4.0, 0.1)
|
||||
# Reach of the reach-based melee hit and its re-strike gap. This now governs ONLY the sidestep
|
||||
# PASS (mat charges the bull past with the blade out): a fast lateral sweep where the thin blade
|
||||
# Area would tunnel, so a center-to-center distance check is the reliable gore. The stationary
|
||||
# ATTACK stab no longer uses this — it drives off the sword's BladeHitbox collider (see below).
|
||||
_reg_f("Matador", "mat_stab_reach", 2.0, 0.5, 4.0, 0.1)
|
||||
# Distance the matador plants at to swing. The ATTACK stab damages off the animated BladeHitbox,
|
||||
# whose thrust reaches ~3.75 m at full extension — so this MUST stay under that or the blade never
|
||||
# touches the bull and the stab whiffs. 3.5 m keeps the matador clear of the bull's ~1.8 m-long
|
||||
# body while the thrust still lands. Raise toward 3.75 for more gap, lower to stab from closer.
|
||||
_reg_f("Matador", "mat_stab_standoff", 3.5, 0.5, 4.0, 0.1)
|
||||
# Fraction through the Attack clip at which the blade's collider is armed. The clip is guard →
|
||||
# wind-up (blade pulled back, phase ~0.3-0.5) → thrust (blade drives out to ~3.5 m, phase ~0.55+).
|
||||
# Arming at the thrust keeps the bull from being gored during the wind-up (blade not yet extended)
|
||||
# or the guard pose. The BladeHitbox overlap still decides the exact hit; this just gates timing.
|
||||
_reg_f("Matador", "mat_stab_strike_at", 0.5, 0.0, 1.0, 0.05)
|
||||
# Chance, each time a stab finishes, that the matador breaks off into something else (give ground,
|
||||
# circle, or throw) instead of immediately stabbing again — keeps it from drilling the same thrust
|
||||
# on repeat. 0 = always re-stab if in range, 1 = always break off after every stab.
|
||||
_reg_f("Matador", "mat_stab_followup_chance", 0.6, 0.0, 1.0, 0.05)
|
||||
# Beat after every stab where the brain won't re-commit to ATTACK, so it can't machine-gun the
|
||||
# bull — it circles/gives ground instead. 0 = stab as fast as range allows.
|
||||
_reg_f("Matador", "mat_stab_recovery", 0.9, 0.0, 3.0, 0.1)
|
||||
# Chance, when a stab actually CONNECTS, that the matador breaks into a crowd-pleasing taunt and
|
||||
# gives ground instead of pressing — milking the hit rather than spamming. High by design.
|
||||
_reg_f("Matador", "mat_taunt_after_hit", 0.85, 0.0, 1.0, 0.05)
|
||||
_reg_f("Matador", "mat_stab_cooldown", 0.6, 0.1, 3.0, 0.1)
|
||||
# Half-angle (deg) the matador must be facing the bull within for a stab to land.
|
||||
# Stops "sword's off to the side but I still died" — you're only gored when the
|
||||
# blade is actually presented at you.
|
||||
_reg_f("Matador", "mat_stab_arc", 55.0, 5.0, 180.0, 5.0)
|
||||
_reg_f("Matador", "mat_roll_chance", 0.35, 0.0, 1.0, 0.05)
|
||||
# Chance a matador rolls clear (survives) instead of ragdolling when the bull's charge connects.
|
||||
_reg_f("Matador", "mat_roll_chance", 0.8, 0.0, 1.0, 0.05)
|
||||
# How much a committed charge pierces the survival roll: roll chance fades toward
|
||||
# mat_roll_chance*(1-this) as bull speed climbs to mat_charge_speed. 1 = full-speed charge always
|
||||
# gores. (A dash connect ignores the roll entirely.)
|
||||
_reg_f("Matador", "mat_charge_pierce", 0.8, 0.0, 1.0, 0.05)
|
||||
_reg_f("Matador", "mat_roll_duration", 0.45, 0.1, 1.5, 0.05)
|
||||
# Playback rate of the Draw_weapon clip used for both drawing and sheathing —
|
||||
# higher = snappier unholster/holster.
|
||||
@@ -190,24 +215,117 @@ func _register_all() -> void:
|
||||
_reg_f("Matador", "mat_taunt_hold", 8.0, 1.0, 20.0, 0.5)
|
||||
# Small so it smooths dithering without locking the matador into idling.
|
||||
_reg_f("Matador", "mat_w_commit", 0.15, 0.0, 2.0, 0.05)
|
||||
# ── Bear (boss) ─────────────────────────────────────────────────────────────
|
||||
# A Dark-Souls-style boss with a learnable moveset. It soaks bear_max_hp clean hits
|
||||
# (ram or ability), staggering on each, and only topples when worn down. From NEUTRAL
|
||||
# it weighs its options by the range band to the bull and commits to one telegraphed
|
||||
# routine (wind-up → active → recovery); each routine plays to the end (the recovery
|
||||
# is the player's punish window). Below bear_enrage_frac HP it enters phase 2: faster
|
||||
# tells and recovery (× bear_enrage_scale) and longer combo chains.
|
||||
_reg_f("Bear", "bear_max_hp", 30.0, 1.0, 100.0, 1.0)
|
||||
# HP fraction at which phase 2 ("Fury") triggers, and how much it multiplies every
|
||||
# wind-up / recovery timer (lower = snappier, more dangerous).
|
||||
_reg_f("Bear", "bear_enrage_frac", 0.4, 0.0, 1.0, 0.05)
|
||||
_reg_f("Bear", "bear_enrage_scale", 0.7, 0.3, 1.0, 0.05)
|
||||
# Range bands (m) that pick the moveset: ≤close it strikes (swipe / smash), ≤mid it
|
||||
# walks in to close the gap (stalk) or leaps, beyond it lopes in (prowl) or leaps.
|
||||
# close is deliberately generous — the bear commits to melee "from a bit further" and
|
||||
# steps in during the swing (see bear_lunge_speed) rather than needing to be on top.
|
||||
_reg_f("Bear", "bear_close_range", 5.0, 1.0, 12.0, 0.1)
|
||||
_reg_f("Bear", "bear_mid_range", 10.0, 3.0, 20.0, 0.5)
|
||||
_reg_f("Bear", "bear_long_range", 15.0, 3.0, 100.0, 0.5)
|
||||
# Beat spent in NEUTRAL sizing up the bull between routines — kept short so the bear
|
||||
# flows straight from one action into the next instead of pausing (raise for a more
|
||||
# hesitant, readable boss; near-0 for relentless pressure). Shrinks again in phase 2.
|
||||
_reg_f("Bear", "bear_think_time", 0.06, 0.0, 1.0, 0.01)
|
||||
# Locomotion: the all-fours prowl (close a big gap), the menacing 2-leg walk-in
|
||||
# (stalk), the facing rate while positioning/winding up, and the softer tracking rate
|
||||
# a swing keeps on the bull mid-attack so it's harder to just walk out of.
|
||||
_reg_f("Bear", "bear_run_speed", 11.0, 1.0, 20.0, 0.1)
|
||||
_reg_f("Bear", "bear_stalk_speed", 5.5, 0.5, 12.0, 0.1)
|
||||
_reg_f("Bear", "bear_turn_rate", 7.0, 1.0, 20.0, 0.5)
|
||||
_reg_f("Bear", "bear_track_active", 3.5, 0.0, 12.0, 0.1)
|
||||
# Forward step-in during a swing so a strike lands even when the bull is a touch out of
|
||||
# reach (also carries the tracking); 0 = a purely stationary swing.
|
||||
_reg_f("Bear", "bear_lunge_speed", 7.0, 0.0, 16.0, 0.5)
|
||||
# Playback multiplier for the swipe/smash clips — >1 makes the punches snappier.
|
||||
_reg_f("Bear", "bear_attack_anim_speed", 1.35, 0.5, 3.0, 0.05)
|
||||
# Half-arc (deg) the bear must be facing the bull within for a directional swing to
|
||||
# connect; slams use their own radius instead of an arc.
|
||||
_reg_f("Bear", "bear_hit_arc", 70.0, 5.0, 180.0, 5.0)
|
||||
# Double Swipe (ONE_TWO_HIT) — bread-and-butter close combo, two quick hits.
|
||||
_reg_f("Bear", "bear_swipe_windup", 0.3, 0.05, 2.0, 0.05)
|
||||
_reg_f("Bear", "bear_swipe_recover", 0.35, 0.05, 3.0, 0.05)
|
||||
_reg_f("Bear", "bear_swipe_reach", 4.2, 1.0, 8.0, 0.1)
|
||||
# Which claw-slash FX plays on the first vs second swipe hit — the L/R clips are easy to
|
||||
# mix up, so 0 = first hit L then R, 1 = swap them. Purely cosmetic (no gameplay effect).
|
||||
_reg_f("Bear", "bear_fx_claw_swap", 0.0, 0.0, 1.0, 1.0)
|
||||
# Live yaw (deg) applied to the whole Bear_FX node before each effect fires, so the claw
|
||||
# rake / debris can be spun to line up with the bear's facing by eye. Bake the good value.
|
||||
_reg_f("Bear", "bear_fx_yaw", 0.0, -180.0, 180.0, 5.0)
|
||||
# The baked crater clip only pops up (no shrink), so hold it on the ground this long after a
|
||||
# leap slam before hiding it — otherwise it flashes for a single frame and reads as invisible.
|
||||
_reg_f("Bear", "bear_fx_crater_linger", 0.8, 0.0, 3.0, 0.1)
|
||||
# Overhead Smash (SMASH_HIT) — slower tell, biggest punish window, AoE on impact.
|
||||
_reg_f("Bear", "bear_smash_windup", 0.6, 0.1, 3.0, 0.05)
|
||||
_reg_f("Bear", "bear_smash_recover", 0.75, 0.1, 4.0, 0.05)
|
||||
# The overhead smash's hitbox is a forward box lane whose size + travel are authored in
|
||||
# BearAttackHitboxes.tscn's AnimationPlayer ("smash_travel"). Here we only set the upward
|
||||
# pop the bull takes off its feet at the far end (it ramps 0→this with hit distance).
|
||||
_reg_f("Bear", "bear_smash_knockup", 6.0, 0.0, 16.0, 0.5)
|
||||
# Leap Slam (JUMP_SMASH, 47 frames @30fps) — timed to the clip by FRAME: it plays the
|
||||
# crouch grounded, springs at the takeoff frame, and the arc is solved so the paws hit
|
||||
# ground exactly on the impact frame (25), leaving the tail frames to settle on the
|
||||
# ground — no finishing the anim in mid-air. The arc uses its own gravity so peak height
|
||||
# and airtime are independent: bear_leap_height is the peak reached in that fixed airtime.
|
||||
_reg_f("Bear", "bear_leap_takeoff_frame", 6.0, 0.0, 46.0, 1.0)
|
||||
_reg_f("Bear", "bear_leap_impact_frame", 25.0, 1.0, 47.0, 1.0)
|
||||
_reg_f("Bear", "bear_leap_height", 2.6, 0.5, 8.0, 0.1)
|
||||
_reg_f("Bear", "bear_leap_recover", 0.35, 0.0, 4.0, 0.05)
|
||||
_reg_f("Bear", "bear_leap_speed", 14.0, 4.0, 30.0, 0.5)
|
||||
# Where the leap-slam launch zone starts, as a fraction of the circle radius. 0 = launch anywhere
|
||||
# inside; raise to carve a grounded inner zone that only mauls (0.75 = only the outer quarter ring).
|
||||
_reg_f("Bear", "bear_leap_ring_frac", 0.0, 0.0, 1.0, 0.05)
|
||||
_reg_f("Bear", "bear_leap_knockup", 7.0, 0.0, 16.0, 0.5)
|
||||
# Stalk (WALK_ON2LEGS) — how long it will keep walking the bull down before re-deciding.
|
||||
_reg_f("Bear", "bear_stalk_time", 2.5, 0.0, 6.0, 0.1)
|
||||
# Odds a close combo chains a follow-up smash after the swipe (phase 2 always chains).
|
||||
_reg_f("Bear", "bear_combo_chance", 0.7, 0.0, 1.0, 0.05)
|
||||
# Minimum bull speed (ram) that counts as a hit on the bear — a gentle nudge is
|
||||
# shrugged off, only a real charge or an ability wounds it. (The bear itself never
|
||||
# damages the bull by colliding — only its swings and slams hurt.)
|
||||
_reg_f("Bear", "bear_hit_threshold", 6.0, 1.0, 30.0, 0.5)
|
||||
# Planar reach at which a horns-first bull charge wounds the bear (~bear body radius + bull reach).
|
||||
# The bull's swept path is tested against this, so a tunnelling or point-blank charge still lands.
|
||||
_reg_f("Bear", "bear_ram_reach", 2.1, 0.5, 5.0, 0.1)
|
||||
# How long (s) the bear is rocked back and can't act after taking a hit.
|
||||
_reg_f("Bear", "bear_stagger_time", 0.5, 0.0, 2.0, 0.05)
|
||||
# Poise: after a stagger the bear shrugs off staggers for this long (hits still wound
|
||||
# it), so it can't be perma-stunlocked — it gets a window to commit an attack that then
|
||||
# rides its hyper-armour. 0 = no poise (stun-locks under sustained fire).
|
||||
_reg_f("Bear", "bear_stagger_cd", 1.0, 0.0, 4.0, 0.05)
|
||||
# ── Sword ─────────────────────────────────────────────────────────────────
|
||||
# Local seating of the sword in the right hand (drawn / fighting).
|
||||
# Defaults are identity — the bone is oriented in Blender to seat the sword
|
||||
# directly; these exist to fine-tune in-game without re-exporting.
|
||||
# The blade model runs along its local +Z, but weapon_bone (like every rig bone)
|
||||
# points down its local +Y — so identity leaves the blade jutting out sideways.
|
||||
# rot_x = -90 maps the blade's +Z onto the bone's +Y so it thrusts straight along
|
||||
# the bone; rot_y is then the free roll (crossguard tilt) about the blade axis.
|
||||
_reg_f("Sword", "sword_pos_x", 0.0, -1.0, 1.0, 0.01)
|
||||
_reg_f("Sword", "sword_pos_y", 0.0, -1.0, 1.0, 0.01)
|
||||
_reg_f("Sword", "sword_pos_z", 0.0, -1.0, 1.0, 0.01)
|
||||
_reg_f("Sword", "sword_rot_x", 0.0, -180.0, 180.0, 1.0)
|
||||
_reg_f("Sword", "sword_rot_x", -90.0, -180.0, 180.0, 1.0)
|
||||
_reg_f("Sword", "sword_rot_y", 0.0, -180.0, 180.0, 1.0)
|
||||
_reg_f("Sword", "sword_rot_z", 0.0, -180.0, 180.0, 1.0)
|
||||
# Local seating of the sword in the hip holster (sheathed / wandering).
|
||||
# Independent of the hand grip so each pose can be tuned without affecting the
|
||||
# other. Defaults angle the blade down along the matador's side.
|
||||
# other. weapon_rest_bone sits on the left hip; these angle the blade down and
|
||||
# out along the OUTSIDE of the left thigh (rot_x/rot_y aim the blade, rot_z rolls
|
||||
# it about its own axis) so it trails back beside the leg instead of clipping it.
|
||||
_reg_f("Sword", "sword_rest_pos_x", 0.0, -1.0, 1.0, 0.01)
|
||||
_reg_f("Sword", "sword_rest_pos_y", 0.0, -1.0, 1.0, 0.01)
|
||||
_reg_f("Sword", "sword_rest_pos_z", 0.0, -1.0, 1.0, 0.01)
|
||||
_reg_f("Sword", "sword_rest_rot_x", -120.0, -180.0, 180.0, 1.0)
|
||||
_reg_f("Sword", "sword_rest_rot_y", 0.0, -180.0, 180.0, 1.0)
|
||||
_reg_f("Sword", "sword_rest_rot_x", -110.0, -180.0, 180.0, 1.0)
|
||||
_reg_f("Sword", "sword_rest_rot_y", -133.0, -180.0, 180.0, 1.0)
|
||||
_reg_f("Sword", "sword_rest_rot_z", 0.0, -180.0, 180.0, 1.0)
|
||||
# ── Spear throw (matador ranged attack) ──────────────────────────────────
|
||||
# Local seating of the spear in the throwing hand during the wind-up. Tune to
|
||||
@@ -238,10 +356,10 @@ func _register_all() -> void:
|
||||
_reg_f("Sword", "mat_throw_arm_release", -90.0,-180.0, 180.0, 1.0)
|
||||
_reg_f("Sword", "mat_throw_elbow", 80.0,-180.0, 180.0, 1.0)
|
||||
# ── Abilities ─────────────────────────────────────────────────────────────
|
||||
_reg_f("Abilities", "kick_cooldown", 1.5, 0.2, 10.0, 0.1)
|
||||
_reg_f("Abilities", "kick_cooldown", 2, 0.2, 600, 0.1)
|
||||
_reg_f("Abilities", "kick_range", 6.0, 0.5, 8.0, 0.1)
|
||||
_reg_f("Abilities", "kick_strength", 12.0, 1.0, 30.0)
|
||||
_reg_f("Abilities", "slam_cooldown", 4.0, 0.5, 15.0, 0.1)
|
||||
_reg_f("Abilities", "slam_cooldown", 12, 0.5, 600, 0.1)
|
||||
_reg_f("Abilities", "slam_jump_velocity", 7.0, 2.0, 20.0)
|
||||
# Descent gravity multiplier — higher = faster crash, less airtime.
|
||||
_reg_f("Abilities", "slam_fall_mult", 3.0, 1.0, 8.0, 0.5)
|
||||
@@ -250,7 +368,7 @@ func _register_all() -> void:
|
||||
_reg_f("Abilities", "slam_launch_up", 7.0, 0.0, 15.0, 0.5)
|
||||
_reg_f("Abilities", "slam_range", 4.0, 1.0, 10.0, 0.1)
|
||||
_reg_f("Abilities", "slam_strength", 14.0, 1.0, 30.0)
|
||||
_reg_f("Abilities", "dash_cooldown", 0.5, 0.1, 10.0, 0.1)
|
||||
_reg_f("Abilities", "dash_cooldown", 3, 0.1, 600.0, 0.1)
|
||||
_reg_f("Abilities", "dash_speed", 66.0, 5.0, 200.0)
|
||||
# Exponential rate the dash bleeds from dash_speed back to cruise (max_speed).
|
||||
# Higher = a snappier bullet that dies off quicker; lower = a longer glide.
|
||||
@@ -261,7 +379,7 @@ func _register_all() -> void:
|
||||
# closest matador; on slamming one the ball POPS it (launched skyward via
|
||||
# roll_knockup) then CHAINS to the next closest, up to roll_chain_count times.
|
||||
# roll_turn is the homing turn rate. When no chain targets remain, the roll ends.
|
||||
_reg_f("Roll", "roll_cooldown", 3.0, 0.5, 15.0, 0.1)
|
||||
_reg_f("Roll", "roll_cooldown", 20, 0.5, 600, 0.1)
|
||||
_reg_f("Roll", "roll_duration", 2.5, 0.5, 6.0, 0.1) # max roll time
|
||||
_reg_f("Roll", "roll_chain_count", 2.0, 0.0, 8.0, 1.0) # extra matadors chained after the first
|
||||
_reg_f("Roll", "roll_base_speed", 28.0, 5.0, 120.0) # speed at the start of the roll
|
||||
@@ -273,7 +391,6 @@ func _register_all() -> void:
|
||||
_reg_f("Roll", "roll_hit_strength", 22.0, 1.0, 40.0) # horizontal launch on the pop
|
||||
_reg_f("Roll", "roll_knockup", 11.0, 0.0, 25.0) # vertical knock-up on the pop
|
||||
# ── Debug overlays (see debug_draw.gd) ───────────────────────────────────
|
||||
_reg_b("Debug", "show_collisions", false)
|
||||
# PS1 post-process filter (see ps1_filter.gd on the fullscreen ColorRect):
|
||||
# screen-covering CRT/PS1 shader — pixelation, colour-banding + dither, and a
|
||||
# rolling scanline. Keys map 1:1 onto the shader uniforms; show_ps1 toggles the
|
||||
@@ -281,12 +398,13 @@ func _register_all() -> void:
|
||||
# a uniform out of bounds.
|
||||
_reg_b("PS1", "show_ps1", true)
|
||||
_reg_f("PS1", "ps1_pixel_scale", 4.0, 1.0, 8.0, 1.0)
|
||||
_reg_f("PS1", "ps1_color_depth", 5.0, 2.0, 8.0, 1.0)
|
||||
_reg_f("PS1", "ps1_dither_strength", 0.8, 0.0, 2.0, 0.05)
|
||||
_reg_f("PS1", "ps1_color_depth", 4.5, 2.0, 8.0, 1.0)
|
||||
_reg_f("PS1", "ps1_dither_strength", 1, 0.0, 2.0, 0.05)
|
||||
_reg_f("PS1", "ps1_scanline_strength", 0.2, 0.0, 1.0, 0.05)
|
||||
_reg_f("PS1", "ps1_roll_speed", 3.0, 0.0, 10.0, 0.1)
|
||||
_reg_f("PS1", "ps1_roll_strength", 1.0, 0.0, 1.0, 0.05)
|
||||
_reg_b("Debug", "show_hitboxes", false)
|
||||
_reg_b("Debug", "show_attacks", false)
|
||||
_reg_b("Debug", "show_bones", false)
|
||||
_reg_b("Debug", "show_raycasts", false)
|
||||
_reg_b("Debug", "show_tail", false)
|
||||
@@ -299,6 +417,9 @@ func _register_all() -> void:
|
||||
# Force the on-screen touch controls (joystick + ability buttons) on even on a
|
||||
# desktop build — otherwise they appear only when a touchscreen is detected.
|
||||
_reg_b("Touch", "force_touch_controls", false)
|
||||
# On-screen readout of live touch state (event count, last position, active zone) so
|
||||
# touch problems can be diagnosed on the actual device, where no console is reachable.
|
||||
_reg_b("Touch", "touch_debug", false)
|
||||
|
||||
|
||||
func _reg_f(section: String, key: String, default: float,
|
||||
@@ -349,11 +470,54 @@ func get_all() -> Dictionary:
|
||||
|
||||
|
||||
func save() -> void:
|
||||
var cfg := ConfigFile.new()
|
||||
var path := "res://debug_params.gd"
|
||||
var file := FileAccess.open(path, FileAccess.READ)
|
||||
if file == null:
|
||||
push_error("DP.save: cannot open " + path)
|
||||
return
|
||||
var src := file.get_as_text()
|
||||
file.close()
|
||||
|
||||
for key: String in _params:
|
||||
var p: Dictionary = _params[key]
|
||||
cfg.set_value(p["section"], key, p["value"])
|
||||
cfg.save(SAVE_PATH)
|
||||
if p["value"] == p["default"]:
|
||||
continue
|
||||
var re := RegEx.new()
|
||||
var literal := ""
|
||||
if p["type"] == TYPE_FLOAT:
|
||||
re.compile('(_reg_f\\("[^"]+",\\s*"%s",\\s*)([-\\d.e]+)' % key)
|
||||
literal = _fmt_float(p["value"] as float)
|
||||
else:
|
||||
re.compile('(_reg_b\\("[^"]+",\\s*"%s",\\s*)(true|false)' % key)
|
||||
literal = "true" if bool(p["value"]) else "false"
|
||||
var m := re.search(src)
|
||||
if m == null:
|
||||
push_warning("DP.save: no _reg_ line found for '%s' — skipped" % key)
|
||||
continue
|
||||
# Splice the value in by index rather than RegEx.sub(): sub()'s replacement
|
||||
# string parses "$n" as a backreference, so "$1"+"12.5" becomes "$112.5"
|
||||
# (group 112 → PCRE2 error → mangled output). Indexed splice inserts the
|
||||
# literal verbatim, exactly the value the user entered.
|
||||
src = src.substr(0, m.get_start(2)) + literal + src.substr(m.get_end(2))
|
||||
p["default"] = p["value"]
|
||||
|
||||
var wfile := FileAccess.open(path, FileAccess.WRITE)
|
||||
if wfile == null:
|
||||
push_error("DP.save: cannot write " + path)
|
||||
return
|
||||
wfile.store_string(src)
|
||||
wfile.close()
|
||||
|
||||
|
||||
# Godot's String % operator has no "g" conversion — "%.6g" % v slips past the
|
||||
# compiler (v is not const) but emits the literal "%.6g" at runtime, which would be
|
||||
# written straight into the source. "%s" gives the shortest round-tripping form,
|
||||
# matching the value the user entered; the guard keeps it a float literal.
|
||||
func _fmt_float(v: float) -> String:
|
||||
var s := "%s" % v
|
||||
if not ("." in s or "e" in s):
|
||||
s += ".0"
|
||||
return s
|
||||
|
||||
|
||||
func load_saved() -> void:
|
||||
|
||||
+21
-3
@@ -34,10 +34,28 @@ commit=${GIT_COMMIT}
|
||||
built=${BUILD_DATE}
|
||||
EOF
|
||||
|
||||
# Cache-bust: give wasm/pck unique names so browsers never serve a stale build.
|
||||
# index.js gets a ?v= query string; wasm/pck get renamed because the engine
|
||||
# fetches them internally using GODOT_CONFIG.executable as the base name.
|
||||
STAMP="$GIT_COMMIT"
|
||||
cp "$BUILD_DIR/index.wasm" "$BUILD_DIR/index.${STAMP}.wasm"
|
||||
cp "$BUILD_DIR/index.wasm.gz" "$BUILD_DIR/index.${STAMP}.wasm.gz"
|
||||
cp "$BUILD_DIR/index.pck" "$BUILD_DIR/index.${STAMP}.pck"
|
||||
|
||||
sed -i \
|
||||
-e "s|src=\"index\.js\"|src=\"index.js?v=${STAMP}\"|" \
|
||||
-e "s|\"executable\":\"index\"|\"executable\":\"index.${STAMP}\"|" \
|
||||
-e "s|\"index\.pck\"|\"index.${STAMP}.pck\"|g" \
|
||||
-e "s|\"index\.wasm\"|\"index.${STAMP}.wasm\"|g" \
|
||||
"$BUILD_DIR/index.html"
|
||||
|
||||
# Remove previous build's versioned assets from the server before uploading.
|
||||
ssh "$SERVER_USER@$SERVER_HOST" "find $SERVER_PATH -maxdepth 1 -name 'index.*.wasm' -o -name 'index.*.wasm.gz' -o -name 'index.*.pck' | xargs -r rm -f"
|
||||
|
||||
scp "$BUILD_DIR/index.html" \
|
||||
"$BUILD_DIR/index.js" \
|
||||
"$BUILD_DIR/index.wasm.gz" \
|
||||
"$BUILD_DIR/index.pck" \
|
||||
"$BUILD_DIR/index.${STAMP}.wasm.gz" \
|
||||
"$BUILD_DIR/index.${STAMP}.pck" \
|
||||
"$BUILD_DIR/index.audio.worklet.js" \
|
||||
"$BUILD_DIR/index.audio.position.worklet.js" \
|
||||
"$BUILD_DIR/index.icon.png" \
|
||||
@@ -46,4 +64,4 @@ scp "$BUILD_DIR/index.html" \
|
||||
"$BUILD_DIR/version.txt" \
|
||||
"$SERVER_USER@$SERVER_HOST:$SERVER_PATH/"
|
||||
|
||||
echo "deployed ${VERSION} to $SERVER_HOST:$SERVER_PATH"
|
||||
echo "deployed ${VERSION} (${STAMP}) to $SERVER_HOST:$SERVER_PATH"
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ custom_template/release=""
|
||||
variant/extensions_support=false
|
||||
variant/thread_support=true
|
||||
vram_texture_compression/for_desktop=true
|
||||
vram_texture_compression/for_mobile=false
|
||||
vram_texture_compression/for_mobile=true
|
||||
html/export_icon=true
|
||||
html/custom_html_shell=""
|
||||
html/head_include=""
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
@tool
|
||||
extends Area3D
|
||||
class_name Hitbox
|
||||
## A designer-placeable attack hitbox: drop this into a scene, give it a CollisionShape3D
|
||||
## child, and drag the shape to size/position the attack's reach in the editor. The shape
|
||||
## itself decides what got hit — no distance/facing math in code.
|
||||
##
|
||||
## Inactive by default; the owning script calls activate() for the swing's active window and
|
||||
## deactivate() when it ends. Each activation only hits a given body once (the bull's own
|
||||
## i-frames also collapse a flurry, but this keeps a single swing from re-triggering).
|
||||
|
||||
const PhysicsLayers = preload("res://physics_layers.gd")
|
||||
|
||||
## How the hit is tagged on the bull's take_sword_hit ("mauled" / "gored" / …).
|
||||
@export var damage_cause: String = "mauled"
|
||||
## Upward launch (m/s) applied to the bull on hit — e.g. an overhead smash that pops it up.
|
||||
@export var knock_up: float = 0.0
|
||||
## Knock-up distance shaping, measured planar (XZ) from this hitbox's own origin to the body:
|
||||
## below `knock_up_min_dist` no pop is applied (leap slam: only the outer ring launches). If
|
||||
## `knock_up_max_dist` > min, the pop ramps 0→`knock_up` from min to max (overhead smash: the
|
||||
## further out the hit lands, the higher the bull flies); at/again 0 it's full past the min.
|
||||
@export var knock_up_min_dist: float = 0.0
|
||||
@export var knock_up_max_dist: float = 0.0
|
||||
|
||||
var _active: bool = false
|
||||
var _hit_this_swing: Dictionary = {}
|
||||
# Whether the most recent active window connected. Cleared on activate(), NOT deactivate(), so the
|
||||
# owner can read it after the window closes (e.g. a landed stab breaks off to taunt).
|
||||
var _did_hit: bool = false
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
# Detect the bull's body (layer BULL) only; never collide or push physics.
|
||||
collision_layer = 0
|
||||
collision_mask = PhysicsLayers.BULL
|
||||
monitorable = false
|
||||
monitoring = false
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
body_entered.connect(_on_body_entered)
|
||||
|
||||
|
||||
func activate() -> void:
|
||||
if _active:
|
||||
return
|
||||
_active = true
|
||||
_hit_this_swing.clear()
|
||||
_did_hit = false
|
||||
monitoring = true
|
||||
|
||||
|
||||
func deactivate() -> void:
|
||||
_active = false
|
||||
monitoring = false
|
||||
|
||||
|
||||
# Did the window that just closed connect? Valid until the next activate() clears it.
|
||||
func did_hit() -> bool:
|
||||
return _did_hit
|
||||
|
||||
|
||||
func _on_body_entered(body: Node3D) -> void:
|
||||
_apply_hit(body)
|
||||
|
||||
|
||||
# For AoE slams the bull is usually already standing inside the shape when it activates, so
|
||||
# body_entered never fires. The owner calls sweep() each active frame to catch current overlaps
|
||||
# (still deduped per activation, so the bull is only hit once per slam).
|
||||
func sweep() -> void:
|
||||
if not _active:
|
||||
return
|
||||
for body in get_overlapping_bodies():
|
||||
_apply_hit(body)
|
||||
|
||||
|
||||
func _apply_hit(body: Node3D) -> void:
|
||||
if not _active or not body.is_in_group(&"player"):
|
||||
return
|
||||
if _hit_this_swing.has(body):
|
||||
return
|
||||
_hit_this_swing[body] = true
|
||||
_did_hit = true
|
||||
body.call(&"take_sword_hit", damage_cause)
|
||||
if knock_up > 0.0:
|
||||
var v := _knock_up_for(body)
|
||||
if v > 0.0:
|
||||
body.call(&"apply_knock_up", v)
|
||||
|
||||
|
||||
# Scale the pop by how far the body is from this hitbox's origin (planar). See the export docs.
|
||||
func _knock_up_for(body: Node3D) -> float:
|
||||
if knock_up_min_dist <= 0.0 and knock_up_max_dist <= 0.0:
|
||||
return knock_up
|
||||
var to := body.global_position - global_position
|
||||
var d := Vector2(to.x, to.z).length()
|
||||
if d < knock_up_min_dist:
|
||||
return 0.0
|
||||
if knock_up_max_dist > knock_up_min_dist:
|
||||
var t := clampf((d - knock_up_min_dist) / (knock_up_max_dist - knock_up_min_dist), 0.0, 1.0)
|
||||
return knock_up * t
|
||||
return knock_up
|
||||
@@ -0,0 +1 @@
|
||||
uid://dlwjiw42q6b5f
|
||||
@@ -42,6 +42,13 @@ var _ability_bar: HBoxContainer
|
||||
var _ability_panels: Array[PanelContainer] = []
|
||||
var _bull_bg: TextureRect
|
||||
|
||||
# Lobby barrel-smash reward — tally the barrels present on load; when the last one bursts,
|
||||
# throw confetti + a "WOooOoW!" and grant the bull two yellow bonus pips. Latched so it
|
||||
# fires once per lobby visit.
|
||||
var _barrels_remaining: int = 0
|
||||
var _barrel_reward_given: bool = false
|
||||
const _BARREL_BONUS_HP: int = 2
|
||||
|
||||
# Red damage vignette — a full-screen shader ColorRect flashed on every hit.
|
||||
const _VIGNETTE_SHADER := "res://damage_vignette.gdshader"
|
||||
var _vignette: ColorRect
|
||||
@@ -71,6 +78,8 @@ var _result_win: bool = false
|
||||
var _over_root: Control
|
||||
var _over_video: VideoStreamPlayer
|
||||
var _over_label: Label
|
||||
var _over_continue: Button
|
||||
var _over_again: Button
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
@@ -88,6 +97,7 @@ func _ready() -> void:
|
||||
_build_touch_controls()
|
||||
_update_control_hints()
|
||||
_find_spawner.call_deferred()
|
||||
_watch_barrels.call_deferred()
|
||||
|
||||
|
||||
# On-screen joystick + ability buttons for touch devices. Self-gating: the overlay
|
||||
@@ -119,7 +129,11 @@ func _build_bottom_hud() -> void:
|
||||
# Bull-head plate that sits behind the ability + health cluster. It's a sibling of the
|
||||
# cluster (not a parent) so it never constrains the cluster's layout; we size and place
|
||||
# it against the cluster's rect in _position_bull_bg.
|
||||
# Skipped on touch/phone: the on-screen thumb cluster already crowds the bottom edge, so
|
||||
# the wide horned plate just adds clutter there.
|
||||
func _build_bull_hud_bg() -> void:
|
||||
if Controls.use_touch_ui():
|
||||
return
|
||||
_bull_bg = TextureRect.new()
|
||||
if ResourceLoader.exists(_BULL_BG):
|
||||
_bull_bg.texture = load(_BULL_BG)
|
||||
@@ -207,10 +221,111 @@ func _find_spawner() -> void:
|
||||
_spawner.all_defeated.connect(_on_all_defeated)
|
||||
|
||||
|
||||
# ── Lobby barrel-smash reward ───────────────────────────────────────────────────
|
||||
|
||||
# Tally the barrels the current level loaded with and listen for each one bursting. Only
|
||||
# the lobby has barrels, so on every other level this simply finds none and stands down.
|
||||
func _watch_barrels() -> void:
|
||||
var barrels := get_tree().get_nodes_in_group(&"barrel")
|
||||
_barrels_remaining = barrels.size()
|
||||
if _barrels_remaining == 0:
|
||||
return
|
||||
for barrel: Node in barrels:
|
||||
barrel.destroyed.connect(_on_barrel_destroyed)
|
||||
|
||||
|
||||
func _on_barrel_destroyed() -> void:
|
||||
_barrels_remaining -= 1
|
||||
if _barrels_remaining > 0 or _barrel_reward_given:
|
||||
return
|
||||
_barrel_reward_given = true
|
||||
# Bank the reward run-wide (capped at +2). Only heal the bull for the pips that were
|
||||
# actually added — if it already carried the cap over from an earlier lobby, it keeps
|
||||
# the cheer but no new health.
|
||||
var granted := Run.add_bonus_hp(_BARREL_BONUS_HP)
|
||||
if granted > 0 and _player != null and _player.has_method(&"grant_bonus_hp"):
|
||||
_player.call(&"grant_bonus_hp", granted)
|
||||
_celebrate()
|
||||
|
||||
|
||||
# The "cleared the lobby" flourish: a burst of confetti and a big springy "WOooOoW!".
|
||||
func _celebrate() -> void:
|
||||
_spawn_confetti()
|
||||
_show_wow()
|
||||
|
||||
|
||||
func _show_wow() -> void:
|
||||
var wow := Label.new()
|
||||
wow.text = "WOooOoW!"
|
||||
wow.set_anchors_preset(Control.PRESET_CENTER)
|
||||
wow.grow_horizontal = Control.GROW_DIRECTION_BOTH
|
||||
wow.grow_vertical = Control.GROW_DIRECTION_BOTH
|
||||
wow.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
wow.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
|
||||
wow.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
wow.add_theme_font_override("font", UiFonts.title())
|
||||
wow.add_theme_font_size_override("font_size", 96)
|
||||
wow.add_theme_color_override("font_color", _HP_BONUS)
|
||||
wow.add_theme_color_override("font_outline_color", Color(0.0, 0.0, 0.0, 0.9))
|
||||
wow.add_theme_constant_override("outline_size", 8)
|
||||
wow.pivot_offset = Vector2.ZERO
|
||||
wow.scale = Vector2(0.2, 0.2)
|
||||
add_child(wow)
|
||||
# Keep the pop growing from the label's centre once it has a real size.
|
||||
await get_tree().process_frame
|
||||
wow.pivot_offset = wow.size * 0.5
|
||||
|
||||
var tw := create_tween()
|
||||
tw.tween_property(wow, "scale", Vector2.ONE, 0.35).set_trans(Tween.TRANS_BACK).set_ease(
|
||||
Tween.EASE_OUT)
|
||||
tw.tween_interval(1.1)
|
||||
tw.parallel().tween_property(wow, "modulate:a", 0.0, 0.6)
|
||||
tw.parallel().tween_property(wow, "position:y", wow.position.y - 40.0, 0.6)
|
||||
tw.tween_callback(wow.queue_free)
|
||||
|
||||
|
||||
func _spawn_confetti() -> void:
|
||||
const _CONFETTI_COLORS: Array[Color] = [
|
||||
Color(0.98, 0.24, 0.28), # red
|
||||
Color(1.00, 0.78, 0.20), # gold
|
||||
Color(0.30, 0.80, 0.40), # green
|
||||
Color(0.30, 0.62, 1.00), # blue
|
||||
Color(0.85, 0.40, 0.95), # violet
|
||||
Color(1.00, 1.00, 1.00), # white
|
||||
]
|
||||
var vp := get_viewport().get_visible_rect().size
|
||||
# One emitter per colour, raining down across the top of the screen.
|
||||
for col: Color in _CONFETTI_COLORS:
|
||||
var p := CPUParticles2D.new()
|
||||
p.position = Vector2(vp.x * 0.5, -20.0)
|
||||
p.emission_shape = CPUParticles2D.EMISSION_SHAPE_RECTANGLE
|
||||
p.emission_rect_extents = Vector2(vp.x * 0.5, 6.0)
|
||||
p.amount = 40
|
||||
p.lifetime = 2.6
|
||||
p.one_shot = true
|
||||
p.explosiveness = 0.35
|
||||
p.direction = Vector2(0.0, 1.0)
|
||||
p.spread = 25.0
|
||||
p.gravity = Vector2(0.0, 420.0)
|
||||
p.initial_velocity_min = 120.0
|
||||
p.initial_velocity_max = 260.0
|
||||
p.angular_velocity_min = -360.0
|
||||
p.angular_velocity_max = 360.0
|
||||
p.scale_amount_min = 4.0
|
||||
p.scale_amount_max = 8.0
|
||||
p.color = col
|
||||
add_child(p)
|
||||
# Self-clean once the burst has fully fallen.
|
||||
get_tree().create_timer(p.lifetime + 0.5).timeout.connect(p.queue_free)
|
||||
|
||||
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
if event is InputEventKey and event.pressed and not event.echo:
|
||||
if _game_over and event.physical_keycode in [KEY_ENTER, KEY_KP_ENTER]:
|
||||
_restart()
|
||||
if _result_win:
|
||||
_continue_to_lobby()
|
||||
else:
|
||||
_restart()
|
||||
elif event.physical_keycode == KEY_TAB and not _game_over:
|
||||
_toggle_controls()
|
||||
elif event.physical_keycode == KEY_ESCAPE:
|
||||
@@ -229,6 +344,15 @@ func _restart() -> void:
|
||||
get_tree().reload_current_scene()
|
||||
|
||||
|
||||
# A cleared level drops the player back into the lobby hub: bank the win (which opens the
|
||||
# gates it unlocks) and reload the shell so it rebuilds the lobby.
|
||||
func _continue_to_lobby() -> void:
|
||||
get_tree().paused = false
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
Run.return_to_lobby()
|
||||
get_tree().change_scene_to_file(Run.active_level().scene_path)
|
||||
|
||||
|
||||
func _toggle_controls() -> void:
|
||||
_controls_visible = not _controls_visible
|
||||
_toggle_btn.text = "Hide controls" if _controls_visible else "Show controls"
|
||||
@@ -240,7 +364,13 @@ func _toggle_controls() -> void:
|
||||
# joystick and ability buttons instead. Shares Controls.use_touch_ui() with that
|
||||
# overlay so exactly one control scheme shows on any given device.
|
||||
func _update_control_hints() -> void:
|
||||
if _game_over or Controls.use_touch_ui():
|
||||
var touch := Controls.use_touch_ui()
|
||||
# The desktop tiles carry keyboard keycaps that mean nothing on a phone, and their
|
||||
# STOP-filtered panels would sit over the joystick zone eating touches — touch_controls
|
||||
# shows its own ability buttons instead, so drop the desktop bar on touch devices.
|
||||
if _ability_bar != null:
|
||||
_ability_bar.visible = not touch
|
||||
if _game_over or touch:
|
||||
_controls_panel.visible = false
|
||||
_tab_hint.visible = false
|
||||
else:
|
||||
@@ -301,6 +431,9 @@ func _show_game_over(win: bool, _cause: String = "") -> void:
|
||||
await get_tree().create_timer(_WIN_DELAY if win else _LOSS_DELAY, false, false, true).timeout
|
||||
|
||||
_over_label.text = "Bull Won!" if _result_win else "Matadors Won!"
|
||||
# A win advances the run (on to the map); a loss ends it (retry from the top).
|
||||
_over_continue.visible = _result_win
|
||||
_over_again.visible = not _result_win
|
||||
|
||||
var path := _WIN_VIDEO if _result_win else _LOSS_VIDEO
|
||||
if ResourceLoader.exists(path):
|
||||
@@ -371,9 +504,15 @@ func _build_game_over() -> void:
|
||||
row.offset_bottom = -48.0
|
||||
_over_root.add_child(row)
|
||||
|
||||
var again := _make_button("Go Again (Enter)")
|
||||
again.pressed.connect(_restart)
|
||||
row.add_child(again)
|
||||
# Win → Continue to the run map; loss → Go Again from the top. Shown per-result in
|
||||
# _show_game_over; both share the Enter shortcut.
|
||||
_over_continue = _make_button("Continue (Enter)")
|
||||
_over_continue.pressed.connect(_continue_to_lobby)
|
||||
row.add_child(_over_continue)
|
||||
|
||||
_over_again = _make_button("Go Again (Enter)")
|
||||
_over_again.pressed.connect(_restart)
|
||||
row.add_child(_over_again)
|
||||
|
||||
var menu := _make_button("Main Menu")
|
||||
menu.pressed.connect(_return_to_menu)
|
||||
@@ -387,6 +526,9 @@ func _build_game_over() -> void:
|
||||
const _HP_FULL: Color = Color(0.82, 0.16, 0.12)
|
||||
const _HP_EMPTY: Color = Color(0.35, 0.05, 0.05)
|
||||
const _HP_SOCKET: Color = Color(0.05, 0.02, 0.02, 0.92)
|
||||
# Bonus pips (barrel-smash reward) read as bright gold-yellow so they stand apart from the
|
||||
# red life bar.
|
||||
const _HP_BONUS: Color = Color(1.00, 0.84, 0.18)
|
||||
|
||||
const _HP_PIP_W: float = 22.0
|
||||
const _HP_PIP_H: float = 14.0
|
||||
@@ -465,10 +607,15 @@ func _on_health_changed(current: int, max_hp: int) -> void:
|
||||
var cur := maxi(current, 0)
|
||||
var frac := 0.0 if max_hp <= 0 else clampf(float(cur) / float(max_hp), 0.0, 1.0)
|
||||
var lit := _HP_FULL.lerp(_HP_EMPTY, 1.0 - frac)
|
||||
# Bonus pips sit at the high end of the bar; paint those top pips yellow when lit.
|
||||
var bonus := 0
|
||||
if _player != null and _player.has_method(&"get_bonus_hp"):
|
||||
bonus = _player.call(&"get_bonus_hp")
|
||||
var base_max := max_hp - bonus
|
||||
for i: int in _hp_seg_fills.size():
|
||||
var fill := _hp_seg_fills[i]
|
||||
fill.visible = i < cur
|
||||
fill.color = lit
|
||||
fill.color = _HP_BONUS if i >= base_max else lit
|
||||
|
||||
|
||||
const _SLOT_SEPARATION: int = 10
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
[gd_scene format=3 uid="uid://map_screen_v1"]
|
||||
|
||||
[ext_resource type="Script" path="res://levels/map_screen.gd" id="1_map"]
|
||||
|
||||
[node name="MapScreen" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
script = ExtResource("1_map")
|
||||
@@ -0,0 +1,778 @@
|
||||
[gd_scene format=3 uid="uid://co4tgvdpdte4v"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dio67r8ambe7h" path="res://Assets/arena_placeholder_v01.glb" id="2_nxogm"]
|
||||
[ext_resource type="PackedScene" uid="uid://cl54dt38yj2x" path="res://Assets/Arena.glb" id="3_fy5k1"]
|
||||
[ext_resource type="Script" uid="uid://dou5ar6tkmng1" path="res://levels/matador_spawn.gd" id="3_spawn"]
|
||||
[ext_resource type="Script" uid="uid://70j3ks1emhkd" path="res://crowd_marker.gd" id="9_agtuu"]
|
||||
[ext_resource type="Script" uid="uid://cj0ytlkuavmf4" path="res://crowd_billboards.gd" id="11_crowd"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_ulcgi"]
|
||||
|
||||
[sub_resource type="Environment" id="Environment_73fnb"]
|
||||
|
||||
[node name="arena_level" type="Node3D" unique_id=701327120]
|
||||
|
||||
[node name="Node3D" type="Node3D" parent="." unique_id=1772505910]
|
||||
|
||||
[node name="StaticBody3D" type="StaticBody3D" parent="Node3D" unique_id=2083665760]
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D/StaticBody3D" unique_id=1028681009]
|
||||
transform = Transform3D(30, 0, 0, 0, 1, 0, 0, 0, 30, 0, -0.5, 0)
|
||||
shape = SubResource("BoxShape3D_ulcgi")
|
||||
|
||||
[node name="arena_placeholder_v01" parent="Node3D" unique_id=173047470 instance=ExtResource("2_nxogm")]
|
||||
|
||||
[node name="Arena_draft" parent="Node3D/arena_placeholder_v01" index="0" unique_id=603097973]
|
||||
visible = false
|
||||
|
||||
[node name="Wall" parent="Node3D/arena_placeholder_v01" index="1" unique_id=171701243]
|
||||
visible = false
|
||||
|
||||
[node name="CollisionShape3D" parent="Node3D/arena_placeholder_v01/Wall/StaticBody3D" parent_id_path=PackedInt32Array(173047470, 1793167121) index="0" unique_id=404958985]
|
||||
transform = Transform3D(0.98309773, 0, 0, 0, 0.9558868, 0, 0, 0, 4.061706, 0.13596812, -0.091219574, -5.4371103e-09)
|
||||
|
||||
[node name="Arena2" parent="Node3D/arena_placeholder_v01" unique_id=1270130903 instance=ExtResource("3_fy5k1")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.017679214, 9.536743e-07, -0.013886452)
|
||||
|
||||
[node name="MatadorSpawner" type="Node3D" parent="." unique_id=1524912967]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 14)
|
||||
script = ExtResource("3_spawn")
|
||||
|
||||
[node name="MatadorSpawner2" type="Node3D" parent="." unique_id=2081003535]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15, 3, 0)
|
||||
script = ExtResource("3_spawn")
|
||||
|
||||
[node name="MatadorSpawner4" type="Node3D" parent="." unique_id=497566616]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 3, 0)
|
||||
script = ExtResource("3_spawn")
|
||||
|
||||
[node name="MatadorSpawner3" type="Node3D" parent="." unique_id=618446747]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, -15)
|
||||
script = ExtResource("3_spawn")
|
||||
|
||||
[node name="Lights" type="Node3D" parent="." unique_id=614769858]
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Lights" unique_id=960453715]
|
||||
transform = Transform3D(0.01535992, 0.56825536, -0.82270896, 0.16280846, 0.8104039, 0.56279576, 0.9865382, -0.14258848, -0.08006904, -4.08134, 9.197985, 0.97087634)
|
||||
light_energy = 0.4
|
||||
light_indirect_energy = 0.767
|
||||
shadow_blur = 0.47
|
||||
|
||||
[node name="SpotLight3D2" type="SpotLight3D" parent="Lights" unique_id=1654524086]
|
||||
transform = Transform3D(0.904133, 0.30962402, -0.2944087, 0.3084627, 0.0037425472, 0.9512291, 0.2956252, -0.95085174, -0.0921237, -3.629381, 10.86347, -2.0124264)
|
||||
light_energy = 16.0
|
||||
light_indirect_energy = 26.095
|
||||
distance_fade_enabled = true
|
||||
spot_range = 32.90586
|
||||
spot_angle = 73.93
|
||||
|
||||
[node name="SpotLight3D" type="SpotLight3D" parent="Lights" unique_id=1408554387]
|
||||
transform = Transform3D(0.9763736, -9.445564e-09, 0.21608931, -0.20963383, 0.24260214, 0.9472053, -0.052423734, -0.9701259, 0.23687032, 4.0400305, 13.463301, 3.9410677)
|
||||
visible = false
|
||||
light_energy = 13.695
|
||||
shadow_enabled = true
|
||||
spot_range = 32.90586
|
||||
|
||||
[node name="SUN_DirectionalLight3D2" type="DirectionalLight3D" parent="Lights" unique_id=1840798568]
|
||||
transform = Transform3D(0.45811793, 0.34843865, -0.81775206, 0.5316611, 0.62986195, 0.56622505, 0.7123655, -0.69416475, 0.10329977, 0, 8.980043, 0)
|
||||
light_energy = 0.106
|
||||
shadow_enabled = true
|
||||
shadow_blur = 10.0
|
||||
|
||||
[node name="DirectionalLight3D2" type="DirectionalLight3D" parent="Lights" unique_id=1111896461]
|
||||
transform = Transform3D(0.6177694, 0, 0.7863593, 0, 1, 0, -0.7863593, 0, 0.6177694, 0, 26.991016, 0)
|
||||
light_color = Color(0.80501384, 0.8787135, 1, 1)
|
||||
light_energy = 0.157
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1750284504]
|
||||
environment = SubResource("Environment_73fnb")
|
||||
|
||||
[node name="Crowd" type="Node3D" parent="." unique_id=2013004589]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, 14)
|
||||
|
||||
[node name="CrowdBillboards" type="MultiMeshInstance3D" parent="Crowd" unique_id=106730614]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -5, -14)
|
||||
script = ExtResource("11_crowd")
|
||||
|
||||
[node name="Left" type="Node3D" parent="Crowd" unique_id=1621845484]
|
||||
|
||||
[node name="L_Step3" type="Node3D" parent="Crowd/Left" unique_id=623102737]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.592416, -1.045898, -23.088398)
|
||||
|
||||
[node name="CrowdMarker9" type="Node3D" parent="Crowd/Left/L_Step3" unique_id=578926054]
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker10" type="Node3D" parent="Crowd/Left/L_Step3" unique_id=1610777090]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.2258072, 0.14058113, -2.5608063)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker11" type="Node3D" parent="Crowd/Left/L_Step3" unique_id=1861343773]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.809, 0.14058208, 1.755331)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker12" type="Node3D" parent="Crowd/Left/L_Step3" unique_id=1555035931]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8979845, 0.14058113, 4.362587)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker13" type="Node3D" parent="Crowd/Left/L_Step3" unique_id=1750314761]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.0180187, 0.14058161, -4.3905067)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker14" type="Node3D" parent="Crowd/Left/L_Step3" unique_id=691141866]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.9175544, 0.14058161, -5.9128)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker15" type="Node3D" parent="Crowd/Left/L_Step3" unique_id=1664612281]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -1.0940075, 0, -1.355114)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker16" type="Node3D" parent="Crowd/Left/L_Step3" unique_id=1677355487]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -3.6482267, 0.14058113, -3.5884771)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker18" type="Node3D" parent="Crowd/Left/L_Step3" unique_id=63826938]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, 1.3811512, 0.14058113, 2.7079024)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker19" type="Node3D" parent="Crowd/Left/L_Step3" unique_id=972576799]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -6.663862, 0.14058161, -5.0203266)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker20" type="Node3D" parent="Crowd/Left/L_Step3" unique_id=1082256967]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -9.743899, 0.14058161, -6.133005)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="L_Step4" type="Node3D" parent="Crowd/Left" unique_id=2012797300]
|
||||
|
||||
[node name="CrowdMarker2" type="Node3D" parent="Crowd/Left/L_Step4" unique_id=2100000002]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, -0.0132164955, -23.088398)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker3" type="Node3D" parent="Crowd/Left/L_Step4" unique_id=563466125]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.533139, -0.0132164955, -24.70021)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker4" type="Node3D" parent="Crowd/Left/L_Step4" unique_id=1529541292]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.021559, -0.013215542, -21.333067)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker5" type="Node3D" parent="Crowd/Left/L_Step4" unique_id=10514539]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.887294, -0.0132164955, -18.725811)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker6" type="Node3D" parent="Crowd/Left/L_Step4" unique_id=1864581651]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.740928, -0.013216019, -28.157803)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker7" type="Node3D" parent="Crowd/Left/L_Step4" unique_id=937874303]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.6115, -0.013216019, -29.924221)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker8" type="Node3D" parent="Crowd/Left/L_Step4" unique_id=1255677084]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.2360125, -0.0132164955, -30.806953)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker9" type="Node3D" parent="Crowd/Left/L_Step4" unique_id=2072287774]
|
||||
transform = Transform3D(0.9725945, 0, 0.232508, 0, 1, 0, -0.232508, 0, 0.9725945, 13.294765, -0.0132164955, -24.4567)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker10" type="Node3D" parent="Crowd/Left/L_Step4" unique_id=1158540011]
|
||||
transform = Transform3D(0.9725945, 0, 0.232508, 0, 1, 0, -0.232508, 0, 0.9725945, 11.827905, -0.0132164955, -26.068512)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker11" type="Node3D" parent="Crowd/Left/L_Step4" unique_id=1862689569]
|
||||
transform = Transform3D(0.9725945, 0, 0.232508, 0, 1, 0, -0.232508, 0, 0.9725945, 14.316324, -0.013215542, -22.701368)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker12" type="Node3D" parent="Crowd/Left/L_Step4" unique_id=494798769]
|
||||
transform = Transform3D(0.9725945, 0, 0.232508, 0, 1, 0, -0.232508, 0, 0.9725945, 15.182059, -0.0132164955, -20.094112)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker13" type="Node3D" parent="Crowd/Left/L_Step4" unique_id=1508360812]
|
||||
transform = Transform3D(0.9725945, 0, 0.232508, 0, 1, 0, -0.232508, 0, 0.9725945, 9.035693, -0.013216019, -29.526104)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker14" type="Node3D" parent="Crowd/Left/L_Step4" unique_id=1811163868]
|
||||
transform = Transform3D(0.9725945, 0, 0.232508, 0, 1, 0, -0.232508, 0, 0.9725945, 4.9062653, -0.013216019, -31.292522)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker15" type="Node3D" parent="Crowd/Left/L_Step4" unique_id=1866931486]
|
||||
transform = Transform3D(0.9725945, 0, 0.232508, 0, 1, 0, -0.232508, 0, 0.9725945, 7.489478, -0.0132164955, -29.721859)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="L_Step1" type="Node3D" parent="Crowd/Left" unique_id=1744694409]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.379745, -2.091795, -22.703432)
|
||||
|
||||
[node name="CrowdMarker9" type="Node3D" parent="Crowd/Left/L_Step1" unique_id=1620001578]
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker10" type="Node3D" parent="Crowd/Left/L_Step1" unique_id=1055150056]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.2258072, 0.14058113, -2.5608063)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker11" type="Node3D" parent="Crowd/Left/L_Step1" unique_id=717131032]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.2287855, 0.14058208, 1.9909182)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker12" type="Node3D" parent="Crowd/Left/L_Step1" unique_id=1781479729]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8979845, 0.14058113, 4.362587)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker13" type="Node3D" parent="Crowd/Left/L_Step1" unique_id=1352193990]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.0180187, 0.14058161, -4.3905067)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker14" type="Node3D" parent="Crowd/Left/L_Step1" unique_id=743385499]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.9175544, 0.14058161, -5.9128)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="L_Step5" type="Node3D" parent="Crowd/Left" unique_id=670288549]
|
||||
transform = Transform3D(0.9967379, 0, -0.08070645, 0, 1, 0, 0.08070645, 0, 0.9967379, 11.637655, -3.0939364, -20.899355)
|
||||
|
||||
[node name="CrowdMarker10" type="Node3D" parent="Crowd/Left/L_Step5" unique_id=274558473]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.2258072, 0.14058113, -2.5608063)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker11" type="Node3D" parent="Crowd/Left/L_Step5" unique_id=516605334]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.809, 0.14058208, 1.755331)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker12" type="Node3D" parent="Crowd/Left/L_Step5" unique_id=1577172273]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8979845, 0.14058113, 4.362587)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker13" type="Node3D" parent="Crowd/Left/L_Step5" unique_id=1757843488]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.0180187, 0.14058161, -4.3905067)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker14" type="Node3D" parent="Crowd/Left/L_Step5" unique_id=1120424592]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.9175544, 0.14058161, -5.9128)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker15" type="Node3D" parent="Crowd/Left/L_Step5" unique_id=1819323657]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -1.0940075, 0, -1.355114)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker16" type="Node3D" parent="Crowd/Left/L_Step5" unique_id=538915422]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -3.6482267, 0.14058113, -3.5884771)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker17" type="Node3D" parent="Crowd/Left/L_Step5" unique_id=1328913359]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -0.053198814, 0.14058208, 0.27350044)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker18" type="Node3D" parent="Crowd/Left/L_Step5" unique_id=878163668]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, 1.3811512, 0.14058113, 2.7079024)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker19" type="Node3D" parent="Crowd/Left/L_Step5" unique_id=1568364605]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -6.663862, 0.14058161, -5.0203266)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker20" type="Node3D" parent="Crowd/Left/L_Step5" unique_id=1367833604]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -9.743899, 0.14058161, -6.133005)
|
||||
script = ExtResource("9_agtuu")
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="Back" type="Node3D" parent="Crowd" unique_id=638158299]
|
||||
|
||||
[node name="B_Step3" type="Node3D" parent="Crowd/Back" unique_id=174422561]
|
||||
transform = Transform3D(0.098605186, 0, 0.99512655, 0, 1, 0, -0.99512655, 0, 0.098605186, -8.350439, -1.045898, -26.733604)
|
||||
|
||||
[node name="CrowdMarker9" type="Node3D" parent="Crowd/Back/B_Step3" unique_id=1376565490]
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker10" type="Node3D" parent="Crowd/Back/B_Step3" unique_id=2134315249]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.2258072, 0.14058113, -2.5608063)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker11" type="Node3D" parent="Crowd/Back/B_Step3" unique_id=434884711]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.809, 0.14058208, 1.755331)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker12" type="Node3D" parent="Crowd/Back/B_Step3" unique_id=1901106701]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8979845, 0.14058113, 4.362587)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker13" type="Node3D" parent="Crowd/Back/B_Step3" unique_id=1659701219]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.0180187, 0.14058161, -4.3905067)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker14" type="Node3D" parent="Crowd/Back/B_Step3" unique_id=469584679]
|
||||
transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, -7.9328146, 0.14058161, -5.5702662)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="B_Step4" type="Node3D" parent="Crowd/Back" unique_id=792967648]
|
||||
transform = Transform3D(0.09860524, 0, 0.9951266, 0, 1, 0, -0.9951266, 0, 0.09860524, 13.383762, 0, -11.9259205)
|
||||
|
||||
[node name="CrowdMarker2" type="Node3D" parent="Crowd/Back/B_Step4" unique_id=409183135]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, -0.0132164955, -23.088398)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker3" type="Node3D" parent="Crowd/Back/B_Step4" unique_id=1443859159]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.533139, -0.0132164955, -24.70021)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker4" type="Node3D" parent="Crowd/Back/B_Step4" unique_id=1737861319]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.021559, -0.013215542, -21.333067)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker5" type="Node3D" parent="Crowd/Back/B_Step4" unique_id=1991036767]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.887294, -0.0132164955, -18.725811)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker6" type="Node3D" parent="Crowd/Back/B_Step4" unique_id=1075095199]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.740928, -0.013216019, -28.157803)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker7" type="Node3D" parent="Crowd/Back/B_Step4" unique_id=1699892650]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.6115, -0.013216019, -29.924221)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker8" type="Node3D" parent="Crowd/Back/B_Step4" unique_id=565692575]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.2360125, -0.0132164955, -30.806953)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="B_Step" type="Node3D" parent="Crowd/Back" unique_id=414907102]
|
||||
transform = Transform3D(-0.04323627, 0, 0.99906486, 0, 1, 0, -0.99906486, 0, -0.04323627, -8.380329, -1.827393, -25.818556)
|
||||
|
||||
[node name="CrowdMarker9" type="Node3D" parent="Crowd/Back/B_Step" unique_id=1943968269]
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker10" type="Node3D" parent="Crowd/Back/B_Step" unique_id=2061244199]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.2258072, 0.14058113, -2.5608063)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker11" type="Node3D" parent="Crowd/Back/B_Step" unique_id=977400271]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.2287855, 0.14058208, 1.9909182)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker12" type="Node3D" parent="Crowd/Back/B_Step" unique_id=1522748404]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8979845, 0.14058113, 4.362587)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker13" type="Node3D" parent="Crowd/Back/B_Step" unique_id=791374389]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.0180187, 0.14058161, -4.3905067)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker14" type="Node3D" parent="Crowd/Back/B_Step" unique_id=1457299400]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.9175544, 0.14058161, -5.9128)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="L_Step5" type="Node3D" parent="Crowd/Back" unique_id=1665844535]
|
||||
transform = Transform3D(0.022304952, 0, 0.99975127, 0, 1, 0, -0.99975127, 0, 0.022304952, -6.9624662, -3.0939345, -25.679592)
|
||||
|
||||
[node name="CrowdMarker10" type="Node3D" parent="Crowd/Back/L_Step5" unique_id=1629480429]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.2258072, 0.3974409, -2.5608063)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker11" type="Node3D" parent="Crowd/Back/L_Step5" unique_id=1506450411]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.809, 0.39744186, 1.755331)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker12" type="Node3D" parent="Crowd/Back/L_Step5" unique_id=622605512]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8979845, 0.3974409, 4.362587)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker13" type="Node3D" parent="Crowd/Back/L_Step5" unique_id=257326812]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.0180187, 0.3974414, -4.3905067)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker14" type="Node3D" parent="Crowd/Back/L_Step5" unique_id=1211459457]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.9175544, 0.3974414, -5.9128)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker15" type="Node3D" parent="Crowd/Back/L_Step5" unique_id=155390702]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -1.0940075, 0.25685978, -1.355114)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker16" type="Node3D" parent="Crowd/Back/L_Step5" unique_id=34227892]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -3.6482267, 0.3974409, -3.5884771)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker17" type="Node3D" parent="Crowd/Back/L_Step5" unique_id=1904591453]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -0.053198814, 0.39744186, 0.27350044)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker18" type="Node3D" parent="Crowd/Back/L_Step5" unique_id=687360614]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, 1.3811512, 0.3974409, 2.7079024)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker19" type="Node3D" parent="Crowd/Back/L_Step5" unique_id=1751401910]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -6.663862, 0.3974414, -5.0203266)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 1
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="Right" type="Node3D" parent="Crowd" unique_id=1277806052]
|
||||
|
||||
[node name="R_Step3" type="Node3D" parent="Crowd/Right" unique_id=1092390193]
|
||||
transform = Transform3D(-0.9993231, 0, -0.036786973, 0, 1, 0, 0.036786973, 0, -0.9993231, -12.105062, -1.045898, -5.1461663)
|
||||
|
||||
[node name="CrowdMarker9" type="Node3D" parent="Crowd/Right/R_Step3" unique_id=550527812]
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker10" type="Node3D" parent="Crowd/Right/R_Step3" unique_id=417838082]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.2258072, 0.14058113, -2.5608063)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker11" type="Node3D" parent="Crowd/Right/R_Step3" unique_id=562183345]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.809, 0.14058208, 1.755331)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker12" type="Node3D" parent="Crowd/Right/R_Step3" unique_id=59142166]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8979845, 0.14058113, 4.362587)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker13" type="Node3D" parent="Crowd/Right/R_Step3" unique_id=1970971214]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.0180187, 0.14058161, -4.3905067)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker14" type="Node3D" parent="Crowd/Right/R_Step3" unique_id=622146302]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.9175544, 0.14058161, -5.9128)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="R_Step4" type="Node3D" parent="Crowd/Right" unique_id=1081871135]
|
||||
transform = Transform3D(-0.99684, 0, 0.07943541, 0, 1, 0, -0.07943541, 0, -0.99684, 2.0997996, 0, -28.147049)
|
||||
|
||||
[node name="CrowdMarker2" type="Node3D" parent="Crowd/Right/R_Step4" unique_id=384688095]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, -0.0132164955, -23.088398)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker3" type="Node3D" parent="Crowd/Right/R_Step4" unique_id=794438773]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.533139, -0.0132164955, -24.70021)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker4" type="Node3D" parent="Crowd/Right/R_Step4" unique_id=318354120]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.021559, -0.013215542, -21.333067)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker5" type="Node3D" parent="Crowd/Right/R_Step4" unique_id=1139375927]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.887294, -0.0132164955, -18.725811)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker6" type="Node3D" parent="Crowd/Right/R_Step4" unique_id=468384482]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.740928, -0.013216019, -28.157803)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker7" type="Node3D" parent="Crowd/Right/R_Step4" unique_id=1219838852]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.6115, -0.013216019, -29.924221)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker8" type="Node3D" parent="Crowd/Right/R_Step4" unique_id=876634044]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.2360125, -0.0132164955, -30.806953)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="R_Step1" type="Node3D" parent="Crowd/Right" unique_id=1804391941]
|
||||
transform = Transform3D(-0.9983546, 0, -0.05734154, 0, 1, 0, 0.05734154, 0, -0.9983546, -11.76964, -2.091795, -5.703799)
|
||||
|
||||
[node name="CrowdMarker9" type="Node3D" parent="Crowd/Right/R_Step1" unique_id=1122311940]
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker10" type="Node3D" parent="Crowd/Right/R_Step1" unique_id=107523420]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.2258072, 0.14058113, -2.5608063)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker11" type="Node3D" parent="Crowd/Right/R_Step1" unique_id=265148663]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.2287855, 0.14058208, 1.9909182)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker12" type="Node3D" parent="Crowd/Right/R_Step1" unique_id=592546407]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8979845, 0.14058113, 4.362587)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker13" type="Node3D" parent="Crowd/Right/R_Step1" unique_id=514985832]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.0180187, 0.14058161, -4.3905067)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker14" type="Node3D" parent="Crowd/Right/R_Step1" unique_id=416317204]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.9175544, 0.14058161, -5.9128)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="L_Step5" type="Node3D" parent="Crowd/Right" unique_id=1434949087]
|
||||
transform = Transform3D(-0.99935067, 0, -0.036034077, 0, 1, 0, 0.036034077, 0, -0.99935067, -10.943644, -3.0939355, -6.015876)
|
||||
|
||||
[node name="CrowdMarker10" type="Node3D" parent="Crowd/Right/L_Step5" unique_id=1951969393]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.2258072, 0.3974409, -2.5608063)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker11" type="Node3D" parent="Crowd/Right/L_Step5" unique_id=1614578381]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.809, 0.39744186, 1.755331)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker12" type="Node3D" parent="Crowd/Right/L_Step5" unique_id=2079795403]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8979845, 0.3974409, 4.362587)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker13" type="Node3D" parent="Crowd/Right/L_Step5" unique_id=18703002]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.0180187, 0.3974414, -4.3905067)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker14" type="Node3D" parent="Crowd/Right/L_Step5" unique_id=619627641]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.9175544, 0.3974414, -5.9128)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker15" type="Node3D" parent="Crowd/Right/L_Step5" unique_id=46013841]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -1.0940075, 0.25685978, -1.355114)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker16" type="Node3D" parent="Crowd/Right/L_Step5" unique_id=1130198232]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -3.6482267, 0.3974409, -3.5884771)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker17" type="Node3D" parent="Crowd/Right/L_Step5" unique_id=744258528]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -0.053198814, 0.39744186, 0.27350044)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker18" type="Node3D" parent="Crowd/Right/L_Step5" unique_id=774368922]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, 1.3811512, 0.3974409, 2.7079024)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker19" type="Node3D" parent="Crowd/Right/L_Step5" unique_id=545323927]
|
||||
transform = Transform3D(0.9906587, 0, 0.13636485, 0, 1, 0, -0.13636485, 0, 0.9906587, -6.663862, 0.3974414, -5.0203266)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 2
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="Front_Right" type="Node3D" parent="Crowd" unique_id=1683981332]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.440575, 0, -11.451455)
|
||||
|
||||
[node name="CrowdMarker3" type="Node3D" parent="Crowd/Front_Right" unique_id=943299423]
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 4
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker4" type="Node3D" parent="Crowd/Front_Right" unique_id=1123847296]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.05489731, 0, 1.3246164)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 4
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker5" type="Node3D" parent="Crowd/Front_Right" unique_id=640400607]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.7841702, -0.93699646, 0)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 4
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker6" type="Node3D" parent="Crowd/Front_Right" unique_id=603945551]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.8390675, -0.93699646, 1.3246164)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 4
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker7" type="Node3D" parent="Crowd/Front_Right" unique_id=26053676]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.6784592, -2.0288038, 0.21630049)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 4
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker8" type="Node3D" parent="Crowd/Front_Right" unique_id=983869769]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7333565, -2.0288038, 1.5409169)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 4
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker9" type="Node3D" parent="Crowd/Front_Right" unique_id=2131633869]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.7693996, -2.7652984, 0)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 4
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker10" type="Node3D" parent="Crowd/Front_Right" unique_id=393732717]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.824297, -2.7652984, 1.3246164)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 4
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="Front_Left" type="Node3D" parent="Crowd" unique_id=1426987879]
|
||||
|
||||
[node name="CrowdMarker" type="Node3D" parent="Crowd/Front_Left" unique_id=884656972]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.1676445, 0, 1.5733547)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 3
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker2" type="Node3D" parent="Crowd/Front_Left" unique_id=1281756834]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.1122522, 0, 1.5733547)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 3
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker3" type="Node3D" parent="Crowd/Front_Left" unique_id=287020937]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.483545, -1.8461189, -0.5833006)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 3
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker4" type="Node3D" parent="Crowd/Front_Left" unique_id=1628869900]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.7205377, -1.8461189, -0.36581516)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 3
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker5" type="Node3D" parent="Crowd/Front_Left" unique_id=375235166]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.245149, -0.9629531, 0.27452564)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 3
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[node name="CrowdMarker6" type="Node3D" parent="Crowd/Front_Left" unique_id=1951144178]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.7495923, -0.9629531, 0.48515797)
|
||||
script = ExtResource("9_agtuu")
|
||||
orientation = 3
|
||||
metadata/_custom_type_script = "uid://70j3ks1emhkd"
|
||||
|
||||
[editable path="Node3D/arena_placeholder_v01"]
|
||||
@@ -0,0 +1,105 @@
|
||||
extends CanvasLayer
|
||||
|
||||
const _GOLD := Color(1.00, 0.78, 0.22)
|
||||
const _CREAM := Color(0.93, 0.88, 0.72)
|
||||
|
||||
const _BAR_W: float = 1260.0
|
||||
const _BAR_H: float = 18.0
|
||||
const _BAR_BG: Color = Color(0.12, 0.04, 0.04, 0.88)
|
||||
const _BAR_FILL: Color = Color(0.65, 0.08, 0.06)
|
||||
const _BAR_ENRAGE: Color = Color(0.90, 0.32, 0.06)
|
||||
|
||||
var _bear: Node = null
|
||||
var _fill: ColorRect = null
|
||||
var _label: Label = null
|
||||
var _max_hp: int = 1
|
||||
var _current_hp: int = 1
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
layer = 10
|
||||
_build_ui()
|
||||
_find_bear.call_deferred()
|
||||
|
||||
|
||||
func _find_bear() -> void:
|
||||
var bears := get_tree().get_nodes_in_group(&"bear")
|
||||
if bears.is_empty():
|
||||
return
|
||||
_bear = bears[0]
|
||||
_bear.health_changed.connect(_on_health_changed)
|
||||
_bear.killed.connect(_on_bear_killed)
|
||||
var max_hp := int(DP.f("bear_max_hp"))
|
||||
_on_health_changed(_bear.get_hp(), max_hp)
|
||||
|
||||
|
||||
func _on_health_changed(current: int, max_hp: int) -> void:
|
||||
_current_hp = current
|
||||
_max_hp = max_hp
|
||||
_update_bar()
|
||||
|
||||
|
||||
func _on_bear_killed() -> void:
|
||||
_current_hp = 0
|
||||
_update_bar()
|
||||
|
||||
|
||||
func _update_bar() -> void:
|
||||
if _fill == null:
|
||||
return
|
||||
var frac := 0.0 if _max_hp <= 0 else clampf(float(_current_hp) / float(_max_hp), 0.0, 1.0)
|
||||
_fill.size.x = _BAR_W * frac
|
||||
var enrage_frac: float = DP.f("bear_enrage_frac")
|
||||
_fill.color = _BAR_FILL.lerp(_BAR_ENRAGE, 1.0 - frac / enrage_frac if frac < enrage_frac else 0.0)
|
||||
if _label != null:
|
||||
_label.text = "BEAR" % [maxi(_current_hp, 0), _max_hp]
|
||||
## for hp display in numbers write %d / %d
|
||||
|
||||
|
||||
func _build_ui() -> void:
|
||||
var panel := PanelContainer.new()
|
||||
panel.add_theme_stylebox_override(
|
||||
"panel", UiTheme.plaque(UiTheme.LEATHER, UiTheme.BORDER, 4, 14.0, 8.0))
|
||||
panel.anchor_left = 0.5
|
||||
panel.anchor_right = 0.5
|
||||
panel.anchor_top = 0.0
|
||||
panel.anchor_bottom = 0.0
|
||||
panel.grow_horizontal = Control.GROW_DIRECTION_BOTH
|
||||
panel.offset_top = 16.0
|
||||
panel.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
add_child(panel)
|
||||
|
||||
var col := VBoxContainer.new()
|
||||
col.add_theme_constant_override("separation", 5)
|
||||
col.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
panel.add_child(col)
|
||||
|
||||
_label = Label.new()
|
||||
_label.text = "BEAR"
|
||||
_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
_label.add_theme_font_override("font", UiFonts.body())
|
||||
_label.add_theme_color_override("font_color", _GOLD)
|
||||
_label.add_theme_color_override("font_outline_color", Color(0, 0, 0, 0.85))
|
||||
_label.add_theme_constant_override("outline_size", 3)
|
||||
_label.add_theme_font_size_override("font_size", 30)
|
||||
_label.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
col.add_child(_label)
|
||||
|
||||
var bar_bg := PanelContainer.new()
|
||||
bar_bg.custom_minimum_size = Vector2(_BAR_W, _BAR_H)
|
||||
bar_bg.clip_contents = true
|
||||
var bg_style := StyleBoxFlat.new()
|
||||
bg_style.bg_color = _BAR_BG
|
||||
bg_style.set_corner_radius_all(4)
|
||||
bg_style.corner_detail = 4
|
||||
bg_style.border_width_bottom = 2
|
||||
bg_style.border_color = Color(UiTheme.GOLD.r, UiTheme.GOLD.g, UiTheme.GOLD.b, 0.35)
|
||||
bar_bg.add_theme_stylebox_override("panel", bg_style)
|
||||
bar_bg.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
col.add_child(bar_bg)
|
||||
|
||||
_fill = ColorRect.new()
|
||||
_fill.color = _BAR_FILL
|
||||
_fill.size = Vector2(_BAR_W, _BAR_H)
|
||||
_fill.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
bar_bg.add_child(_fill)
|
||||
@@ -0,0 +1 @@
|
||||
uid://dfk7dcvki7rqu
|
||||
@@ -0,0 +1,49 @@
|
||||
[gd_scene format=3 uid="uid://dfxigg3cr6nl5"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bm6rmt3xprhjs" path="res://Assets/bear_level_arena.glb" id="1_beararena"]
|
||||
[ext_resource type="Script" uid="uid://bbtlwihtlc1wp" path="res://levels/bear_spawn.gd" id="2_spawn"]
|
||||
[ext_resource type="PackedScene" uid="uid://o8ocjfprxa7u" path="res://Bear.tscn" id="3_bear"]
|
||||
[ext_resource type="Script" uid="uid://dfk7dcvki7rqu" path="res://levels/bear_hud.gd" id="4_bearhud"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_floor"]
|
||||
|
||||
[node name="bear_level" type="Node3D" unique_id=261730746]
|
||||
|
||||
[node name="Node3D" type="Node3D" parent="." unique_id=333447532]
|
||||
|
||||
[node name="StaticBody3D" type="StaticBody3D" parent="Node3D" unique_id=1466540248]
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D/StaticBody3D" unique_id=575454169]
|
||||
transform = Transform3D(30, 0, 0, 0, 1, 0, 0, 0, 30, 0, -0.5, 0)
|
||||
shape = SubResource("BoxShape3D_floor")
|
||||
|
||||
[node name="bear_level_arena" parent="." unique_id=1529242945 instance=ExtResource("1_beararena")]
|
||||
transform = Transform3D(1.94, 0, 0, 0, 1.94, 0, 0, 0, 1.94, 0, 0, 0)
|
||||
|
||||
[node name="floor" parent="bear_level_arena/floor" parent_id_path=PackedInt32Array(1529242945, 294762985) index="0" unique_id=1266729531]
|
||||
visible = false
|
||||
|
||||
[node name="wall" parent="bear_level_arena/floor" parent_id_path=PackedInt32Array(1529242945, 294762985) index="1" unique_id=1445338369]
|
||||
visible = false
|
||||
|
||||
[node name="BearSpawner" type="Node3D" parent="." unique_id=47931969]
|
||||
script = ExtResource("2_spawn")
|
||||
enemy_scene = ExtResource("3_bear")
|
||||
|
||||
[node name="BearHud" type="CanvasLayer" parent="." unique_id=102938471]
|
||||
script = ExtResource("4_bearhud")
|
||||
|
||||
[node name="Lights" type="Node3D" parent="." unique_id=937122836]
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Lights" unique_id=1786336124]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.7071067, 0.70710677, 0, -0.70710677, 0.7071067, 0, 36.945946, 70)
|
||||
light_color = Color(1, 0.75782466, 0.7332154, 1)
|
||||
light_energy = 1.796
|
||||
shadow_enabled = true
|
||||
|
||||
[node name="DirectionalLight3D2" type="DirectionalLight3D" parent="Lights" unique_id=1308313006]
|
||||
transform = Transform3D(1, 0, 0, 0, -0.8660254, 0.49999994, 0, -0.49999994, -0.8660254, 0, 112.56815, 93.37274)
|
||||
light_color = Color(0, 0.33367383, 0.57971, 1)
|
||||
light_energy = 0.616
|
||||
|
||||
[editable path="bear_level_arena"]
|
||||
@@ -0,0 +1,33 @@
|
||||
extends Node3D
|
||||
|
||||
signal matador_killed
|
||||
signal all_defeated
|
||||
|
||||
@export var enemy_scene: PackedScene = null
|
||||
|
||||
var _alive: int = 0
|
||||
var _resolved: bool = false
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
add_to_group(&"matador_spawn")
|
||||
_spawn.call_deferred()
|
||||
|
||||
|
||||
func _spawn() -> void:
|
||||
if enemy_scene == null:
|
||||
return
|
||||
var bear: Node3D = enemy_scene.instantiate()
|
||||
bear.position = Vector3(-15,0,0)
|
||||
get_parent().add_child(bear)
|
||||
if bear.has_signal(&"killed"):
|
||||
bear.killed.connect(_on_bear_killed)
|
||||
_alive += 1
|
||||
|
||||
|
||||
func _on_bear_killed() -> void:
|
||||
matador_killed.emit()
|
||||
_alive -= 1
|
||||
if not _resolved:
|
||||
_resolved = true
|
||||
all_defeated.emit()
|
||||
@@ -0,0 +1 @@
|
||||
uid://bbtlwihtlc1wp
|
||||
@@ -0,0 +1,42 @@
|
||||
extends Node3D
|
||||
## The reusable game shell: player, camera, HUD and the PS1 filter — everything that
|
||||
## outlives a single level. On load it instances the active level's module (geometry,
|
||||
## spawners, lighting, colliders) into LevelRoot. Switching levels frees the whole
|
||||
## previous module first, so no old mesh or collider can survive into the next fight.
|
||||
|
||||
const PhysicsLayers = preload("res://physics_layers.gd")
|
||||
|
||||
@onready var _level_root: Node3D = $LevelRoot
|
||||
@onready var _camera: IsoCamera = $Player/Camera3D
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
Run.ensure_run()
|
||||
load_active_level()
|
||||
|
||||
|
||||
## Tear down the current level module and build the run's active one. Freeing the whole
|
||||
## subtree (not hiding it) is the point: a level's colliders and spawners cease to exist
|
||||
## before the next level's are created.
|
||||
func load_active_level() -> void:
|
||||
for child: Node in _level_root.get_children():
|
||||
_level_root.remove_child(child)
|
||||
child.queue_free()
|
||||
var level := Run.active_level()
|
||||
if level == null or level.level_scene == null:
|
||||
push_warning("game_shell: active level has no level_scene")
|
||||
return
|
||||
_camera.set_framing_scale(level.camera_zoom)
|
||||
var module := level.level_scene.instantiate()
|
||||
_tag_environment_for_corpses(module)
|
||||
_level_root.add_child(module)
|
||||
|
||||
|
||||
## Ground and walls stay on WORLD so the bull and live matadors collide with them; here
|
||||
## we add CORPSE too. A killed matador's ragdoll is masked to CORPSE alone, so it rests
|
||||
## on the arena while the bull — which only collides with WORLD — passes through the body
|
||||
## instead of spazzing out on it. Done at load so it also reaches colliders baked into
|
||||
## the instanced GLB arenas, not just the level module's own floor box.
|
||||
func _tag_environment_for_corpses(module: Node) -> void:
|
||||
for body: StaticBody3D in module.find_children("*", "StaticBody3D", true, false):
|
||||
body.collision_layer |= PhysicsLayers.CORPSE
|
||||
@@ -0,0 +1 @@
|
||||
uid://ptsfs3wq5bje
|
||||
@@ -0,0 +1,30 @@
|
||||
class_name LevelDef
|
||||
extends Resource
|
||||
## Definition of one playable level on the run map — the arena today, later a cave with
|
||||
## a bear, a china shop to smash, and so on. Every map node references a LevelDef, and
|
||||
## the map/flow code never hard-codes a scene: adding a level is a new LevelDef (plus its
|
||||
## scene) handed out by the map generator in run_state.gd.
|
||||
|
||||
@export var id: StringName = &""
|
||||
@export var display_name: String = "Level"
|
||||
## The shell scene loaded when the player enters a node with this level — the reusable
|
||||
## frame (player, camera, HUD, PS1 filter). Shared by every level; the level's own
|
||||
## geometry rides in `level_scene`, which the shell instances at runtime.
|
||||
@export_file("*.tscn") var scene_path: String = ""
|
||||
## The level module instanced into the shell's LevelRoot: spawners, lighting, meshes,
|
||||
## colliders and any level-specific subscripts. Swapped wholesale between levels so no
|
||||
## previous level's geometry (or its colliders) can leak into the next.
|
||||
@export var level_scene: PackedScene = null
|
||||
## Placeholder pip tint on the map until per-level icon art exists.
|
||||
@export var color: Color = Color(0.80, 0.62, 0.24)
|
||||
## Camera framing multiplier when this level loads — 1.0 is the shell camera's default
|
||||
## shot; >1 dollies the camera back for a wider view (the lobby pulls out so the whole
|
||||
## hub reads). Applied by game_shell; independent of the player's scroll-wheel zoom.
|
||||
@export var camera_zoom: float = 1.0
|
||||
## A boss level caps a run — its node is drawn larger and clearing it ends the map.
|
||||
@export var is_boss: bool = false
|
||||
## The enemy this level pits the bull against. Null → the usual matador wave (the
|
||||
## spawner's default). Set → a single boss enemy of this scene is spawned instead (e.g.
|
||||
## the bear), and the fight is won when it falls. The arena scene is shared either way;
|
||||
## only the opponent changes.
|
||||
@export var enemy_scene: PackedScene = null
|
||||
@@ -0,0 +1 @@
|
||||
uid://c6sef0tfl26sr
|
||||
@@ -0,0 +1,315 @@
|
||||
[gd_scene format=3 uid="uid://32nyipcwrab5"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bbfvwolhomilp" path="res://tscn_s/torch.tscn" id="1_w7uyf"]
|
||||
[ext_resource type="PackedScene" uid="uid://bd56iuttyiypv" path="res://tscn_s/BarrelSimple.tscn" id="2_3o0md"]
|
||||
[ext_resource type="PackedScene" uid="uid://dctmlh4hnuux1" path="res://Assets/Lobby_underground.glb" id="2_w7uyf"]
|
||||
[ext_resource type="Script" uid="uid://cwbf7jfkr8j10" path="res://Assets/lobby_underground.gd" id="4_73452"]
|
||||
[ext_resource type="Script" uid="uid://dn77mjyxllgl6" path="res://levels/to_the_bear_level.gd" id="5_6j2sa"]
|
||||
[ext_resource type="Script" uid="uid://cgwliuslwfmbk" path="res://levels/to_the_arena_level.gd" id="6_jmi3x"]
|
||||
|
||||
[sub_resource type="Environment" id="Environment_lobby"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_w7uyf"]
|
||||
resource_name = "Gate_opening"
|
||||
length = 7.5
|
||||
tracks/0/type = "position_3d"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Lobby_underground/Locked_grid")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = PackedFloat32Array(0, 1, 0, 0, 0, 0.033333335, 1, 0.032444477, 0, 0, 0.06666667, 1, -0.033060133, 0, 0, 0.10934577, 1, 0.032444477, 0, 0, 0.14267911, 1, -0.033060133, 0, 0, 0.17731747, 1, 0.032444477, 0, 0, 0.2106508, 1, -0.033060133, 0, 0, 0.24085623, 1, 0.032444477, 0, 0, 0.27418956, 1, -0.033060133, 0, 0, 0.29700676, 1, 0.032444477, 0, 0, 0.3303401, 1, -0.033060133, 0, 0, 0.36350083, 1, 0.032444477, 0, 0, 0.39683416, 1, -0.033060133, 0, 0, 0.42408428, 1, 0.032444477, 0, 0, 0.4574176, 1, -0.033060133, 0, 0, 0.48153976, 1, 0, 0, 0, 0.5148731, 1, 0.032444477, 0, 0, 0.54402214, 1, 0.032444477, 0, 0, 0.54820645, 1, -0.033060133, 0, 0, 0.57735544, 1, -0.033060133, 0, 0, 0.5908855, 1, 0.032444477, 0, 0, 0.60017264, 1, 0.032444477, 0, 0, 0.6242189, 1, -0.033060133, 0, 0, 0.633506, 1, -0.033060133, 0, 0, 0.6588572, 1, 0.032444477, 0, 0, 0.6666667, 1, 0.032444477, 0, 0, 0.6921905, 1, -0.033060133, 0, 0, 0.70000005, 1, -0.033060133, 0, 0, 0.72725016, 1, 0.032444477, 0, 0, 0.75179356, 1, 0, 0, 0, 0.76058346, 1, -0.033060133, 0, 0, 0.7851269, 1, 0.032444477, 0, 0, 0.8184602, 1, -0.033060133, 0, 0, 0.86113936, 1, 0.032444477, 0, 0, 0.8944727, 1, -0.033060133, 0, 0, 0.929111, 1, 0.032444477, 0, 0, 0.9624443, 1, -0.033060133, 0, 0, 0.9926498, 1, 0.032444477, 0, 0, 1.0259831, 1, -0.033060133, 0, 0, 1.0488003, 1, 0.032444477, 0, 0, 1.0821337, 1, -0.033060133, 0, 0, 1.1152945, 1, 0.032444477, 0, 0, 1.1486278, 1, -0.033060133, 0, 0, 1.1758778, 1, 0.032444477, 0, 0, 1.2092111, 1, -0.033060133, 0, 0, 1.2333333, 1, 0, 0, 0, 1.2666667, 1, 0.032444477, 0, 0, 1.2958157, 1, 0.032444477, 0, 0, 1.3, 1, -0.033060133, 0, 0, 1.329149, 1, -0.033060133, 0, 0, 1.342679, 1, 0.032444477, 0, 0, 1.3519661, 1, 0.032444477, 0, 0, 1.3760124, 1, -0.033060133, 0, 0, 1.3852996, 1, -0.033060133, 0, 0, 1.4106507, 1, 0.032444477, 0, 0, 1.4184602, 1, 0.032444477, 0, 0, 1.443984, 1, -0.033060133, 0, 0, 1.4517937, 1, -0.033060133, 0, 0, 1.4790437, 1, 0.032444477, 0, 0, 1.512377, 1, -0.033060133, 0, 0, 1.6, 1, 0, 0, 0, 7.4666667, 1, 0, 6.938447, 0)
|
||||
|
||||
[sub_resource type="Animation" id="Animation_73452"]
|
||||
length = 0.001
|
||||
tracks/0/type = "position_3d"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Lobby_underground/Locked_grid")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = PackedFloat32Array(0, 1, 0, 0, 0)
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_6j2sa"]
|
||||
_data = {
|
||||
&"Gate_opening": SubResource("Animation_w7uyf"),
|
||||
&"RESET": SubResource("Animation_73452")
|
||||
}
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_73452"]
|
||||
size = Vector3(4.1274414, 6.53479, 6.9958496)
|
||||
|
||||
[node name="lobby_level" type="Node3D" unique_id=1511255302]
|
||||
|
||||
[node name="Lights" type="Node3D" parent="." unique_id=562527333]
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Lights" unique_id=955995990]
|
||||
transform = Transform3D(-0.502238, -0.82287306, 0.26577574, 0.36594617, 0.07621761, 0.9275096, -0.78347975, 0.5630903, 0.26284787, 0, 0, 0)
|
||||
light_color = Color(0.78431374, 0.8117647, 1, 1)
|
||||
light_energy = 0.228
|
||||
shadow_enabled = true
|
||||
|
||||
[node name="SpotLight3D" type="SpotLight3D" parent="Lights" unique_id=1783040386]
|
||||
transform = Transform3D(-0.9926004, -0.101570696, 0.06654498, -0.08617279, 0.9753173, 0.20329961, -0.08555172, 0.19606102, -0.9768528, -2.86597, 1.7488484, -31.233114)
|
||||
light_color = Color(0.51629305, 0.20273978, 0.034483083, 1)
|
||||
light_energy = 1000.0
|
||||
shadow_enabled = true
|
||||
shadow_reverse_cull_face = true
|
||||
spot_range = 22.312231
|
||||
|
||||
[node name="SpotLight3D3" type="SpotLight3D" parent="Lights" unique_id=30670834]
|
||||
transform = Transform3D(-0.94000536, -0.14085309, 0.31072634, 0.3218794, -0.064308055, 0.94459444, -0.11306689, 0.9879399, 0.105787426, 11.072751, 38.325985, 6.519638)
|
||||
light_color = Color(0.31635508, 0.2876817, 0.44758296, 1)
|
||||
light_energy = 17.27
|
||||
shadow_enabled = true
|
||||
shadow_reverse_cull_face = true
|
||||
spot_range = 4095.795
|
||||
|
||||
[node name="SpotLight3D2" type="SpotLight3D" parent="Lights" unique_id=748351326]
|
||||
transform = Transform3D(-0.0064023333, 0.48097554, -0.8767107, 0.0041269795, 0.87673384, 0.48095813, 0.99997103, -0.00053891214, -0.0075981184, -30.750355, 6.77676, -0.61776364)
|
||||
light_color = Color(0.1254902, 0.37254903, 0.16078432, 1)
|
||||
light_energy = 1000.0
|
||||
shadow_enabled = true
|
||||
shadow_reverse_cull_face = true
|
||||
spot_range = 22.312231
|
||||
|
||||
[node name="Torches" type="Node3D" parent="Lights" unique_id=1105190110]
|
||||
|
||||
[node name="Torch" parent="Lights/Torches" unique_id=1280811583 instance=ExtResource("1_w7uyf")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.966858, -0.26246262, 0)
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="Lights/Torches/Torch" unique_id=657957966]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.096397, 6.2542057, -15.77264)
|
||||
light_color = Color(0.92773837, 0.6304423, 0, 1)
|
||||
shadow_enabled = true
|
||||
omni_range = 13.657384
|
||||
|
||||
[node name="Torch2" parent="Lights/Torches" unique_id=472577842 instance=ExtResource("1_w7uyf")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.3695145, 0, 0)
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="Lights/Torches/Torch2" unique_id=1032256451]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.096397, 6.2542057, -15.77264)
|
||||
light_color = Color(0.92773837, 0.6304423, 0, 1)
|
||||
shadow_enabled = true
|
||||
omni_range = 13.657384
|
||||
|
||||
[node name="Torch3" parent="Lights/Torches" unique_id=207127049 instance=ExtResource("1_w7uyf")]
|
||||
transform = Transform3D(0.0026565322, 0, 0.9999965, 0, 1, 0, -0.9999965, 0, 0.0026565322, -0.38332775, 1.9073486e-06, 16.218426)
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="Lights/Torches/Torch3" unique_id=1415372954]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.096397, 6.2542057, -15.77264)
|
||||
light_color = Color(0.92773837, 0.6304423, 0, 1)
|
||||
shadow_enabled = true
|
||||
omni_range = 13.657384
|
||||
|
||||
[node name="Torch4" parent="Lights/Torches" unique_id=601493997 instance=ExtResource("1_w7uyf")]
|
||||
transform = Transform3D(0.0026565322, 0, 0.9999965, 0, 1, 0, -0.9999965, 0, 0.0026565322, -0.3482311, 1.9073486e-06, 3.0070276)
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="Lights/Torches/Torch4" unique_id=522455985]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.096397, 6.2542057, -15.77264)
|
||||
light_color = Color(0.92773837, 0.6304423, 0, 1)
|
||||
shadow_enabled = true
|
||||
omni_range = 13.657384
|
||||
|
||||
[node name="Torch5" parent="Lights/Torches" unique_id=1952598831 instance=ExtResource("1_w7uyf")]
|
||||
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0.09400132, 1.9073486e-06, -0.31505296)
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="Lights/Torches/Torch5" unique_id=1334949794]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.096397, 6.2542057, -15.77264)
|
||||
light_color = Color(0.92773837, 0.6304423, 0, 1)
|
||||
shadow_enabled = true
|
||||
omni_range = 13.657384
|
||||
|
||||
[node name="Torch6" parent="Lights/Torches" unique_id=830103133 instance=ExtResource("1_w7uyf")]
|
||||
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 16.002838, 1.9073486e-06, -0.31505156)
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="Lights/Torches/Torch6" unique_id=620547771]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.096397, 6.2542057, -15.77264)
|
||||
light_color = Color(0.92773837, 0.6304423, 0, 1)
|
||||
shadow_enabled = true
|
||||
omni_range = 13.657384
|
||||
|
||||
[node name="Torch7" parent="Lights/Torches" unique_id=1842073656 instance=ExtResource("1_w7uyf")]
|
||||
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -0.349617, 1.9073486e-06, -0.31505227)
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="Lights/Torches/Torch7" unique_id=1456571020]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.096397, 6.2542057, -15.77264)
|
||||
light_color = Color(0.92773837, 0.6304423, 0, 1)
|
||||
shadow_enabled = true
|
||||
omni_range = 13.657384
|
||||
|
||||
[node name="Torch8" parent="Lights/Torches" unique_id=987701581 instance=ExtResource("1_w7uyf")]
|
||||
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -0.349617, 1.9073486e-06, -0.31505227)
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="Lights/Torches/Torch8" unique_id=674836760]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.096397, 6.2542057, -15.77264)
|
||||
light_color = Color(0.92773837, 0.6304423, 0, 1)
|
||||
shadow_enabled = true
|
||||
omni_range = 13.657384
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=939963056]
|
||||
environment = SubResource("Environment_lobby")
|
||||
|
||||
[node name="Barrels" type="Node3D" parent="." unique_id=1740830546]
|
||||
|
||||
[node name="BarrelSimple" parent="Barrels" unique_id=771860903 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.276957, 0.056278944, -13.151918)
|
||||
|
||||
[node name="BarrelSimple2" parent="Barrels" unique_id=609563864 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.8753104, 0.11255789, -14.810173)
|
||||
|
||||
[node name="BarrelSimple3" parent="Barrels" unique_id=2089803156 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.758999, 0.11255789, -14.810173)
|
||||
|
||||
[node name="BarrelSimple4" parent="Barrels" unique_id=223671996 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.40292, 0.11255789, -14.810173)
|
||||
|
||||
[node name="BarrelSimple5" parent="Barrels" unique_id=1643056602 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.8811536, 0.11255789, -10.928238)
|
||||
|
||||
[node name="BarrelSimple6" parent="Barrels" unique_id=1861324204 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.764843, 0.11255789, -10.928238)
|
||||
|
||||
[node name="BarrelSimple7" parent="Barrels" unique_id=1662505485 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.597986, 0.11255789, -11.120108)
|
||||
|
||||
[node name="BarrelSimple8" parent="Barrels" unique_id=711949884 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.686088, 0.11255789, -6.599861)
|
||||
|
||||
[node name="BarrelSimple9" parent="Barrels" unique_id=633001295 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.569777, 0.11255789, -6.599861)
|
||||
|
||||
[node name="BarrelSimple10" parent="Barrels" unique_id=1460426434 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.40292, 0.11255789, -6.791731)
|
||||
|
||||
[node name="BarrelSimple11" parent="Barrels" unique_id=1660531493 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.210243, 0.056278944, 12.913824)
|
||||
|
||||
[node name="BarrelSimple12" parent="Barrels" unique_id=1652485637 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.8753104, 0.11255789, 6.3396435)
|
||||
|
||||
[node name="BarrelSimple13" parent="Barrels" unique_id=590613985 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.758999, 0.11255789, 6.3396435)
|
||||
|
||||
[node name="BarrelSimple14" parent="Barrels" unique_id=176616372 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.40292, 0.11255789, 6.3396435)
|
||||
|
||||
[node name="BarrelSimple15" parent="Barrels" unique_id=465036756 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.070376, 0.11255789, 10.029709)
|
||||
|
||||
[node name="BarrelSimple16" parent="Barrels" unique_id=224566162 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.954065, 0.11255789, 10.029709)
|
||||
|
||||
[node name="BarrelSimple17" parent="Barrels" unique_id=1512161234 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.597986, 0.11255789, 10.029709)
|
||||
|
||||
[node name="BarrelSimple18" parent="Barrels" unique_id=1113697629 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.8753104, 0.11255789, 14.358086)
|
||||
|
||||
[node name="BarrelSimple19" parent="Barrels" unique_id=1224035347 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.758999, 0.11255789, 14.358086)
|
||||
|
||||
[node name="BarrelSimple20" parent="Barrels" unique_id=249931770 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.40292, 0.11255789, 14.358086)
|
||||
|
||||
[node name="BarrelSimple21" parent="Barrels" unique_id=1893459330 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.3384705, 0.056278944, 15.129177)
|
||||
|
||||
[node name="BarrelSimple22" parent="Barrels" unique_id=1386374345 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.883017, 0.11255789, 6.7661877)
|
||||
|
||||
[node name="BarrelSimple23" parent="Barrels" unique_id=1508934681 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.999329, 0.11255789, 6.7661877)
|
||||
|
||||
[node name="BarrelSimple24" parent="Barrels" unique_id=1567182843 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.3554077, 0.11255789, 6.7661877)
|
||||
|
||||
[node name="BarrelSimple25" parent="Barrels" unique_id=2023488949 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.687952, 0.11255789, 10.456253)
|
||||
|
||||
[node name="BarrelSimple26" parent="Barrels" unique_id=918952214 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.804262, 0.11255789, 10.456253)
|
||||
|
||||
[node name="BarrelSimple27" parent="Barrels" unique_id=1651601809 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.1603413, 0.11255789, 10.456253)
|
||||
|
||||
[node name="BarrelSimple28" parent="Barrels" unique_id=1526224674 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.883017, 0.11255789, 14.78463)
|
||||
|
||||
[node name="BarrelSimple29" parent="Barrels" unique_id=212191494 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.999329, 0.11255789, 14.78463)
|
||||
|
||||
[node name="BarrelSimple30" parent="Barrels" unique_id=625425940 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.3554077, 0.11255789, 14.78463)
|
||||
|
||||
[node name="BarrelSimple31" parent="Barrels" unique_id=1216255698 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.165121, 0.056277037, -13.43729)
|
||||
|
||||
[node name="BarrelSimple32" parent="Barrels" unique_id=1511816190 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.938013, 0.11255789, -14.810173)
|
||||
|
||||
[node name="BarrelSimple33" parent="Barrels" unique_id=592677866 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.054325, 0.11255789, -14.810173)
|
||||
|
||||
[node name="BarrelSimple34" parent="Barrels" unique_id=855289598 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.410404, 0.11255789, -14.810173)
|
||||
|
||||
[node name="BarrelSimple35" parent="Barrels" unique_id=521586989 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.742949, 0.11255789, -11.120108)
|
||||
|
||||
[node name="BarrelSimple36" parent="Barrels" unique_id=841067379 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.859259, 0.11255789, -11.120108)
|
||||
|
||||
[node name="BarrelSimple37" parent="Barrels" unique_id=1167528508 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.215338, 0.11255789, -11.120108)
|
||||
|
||||
[node name="BarrelSimple38" parent="Barrels" unique_id=2081881340 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.938013, 0.11255789, -6.791731)
|
||||
|
||||
[node name="BarrelSimple39" parent="Barrels" unique_id=716196812 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.054325, 0.11255789, -6.791731)
|
||||
|
||||
[node name="BarrelSimple40" parent="Barrels" unique_id=1689907554 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.410404, 0.11255789, -6.791731)
|
||||
|
||||
[node name="BarrelSimple41" parent="Barrels" unique_id=1885522518 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.4957442, 0.11255789, -1.522007)
|
||||
|
||||
[node name="BarrelSimple42" parent="Barrels" unique_id=138543996 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.3879452, 0.11255789, -1.522007)
|
||||
|
||||
[node name="BarrelSimple43" parent="Barrels" unique_id=1456059567 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.6908097, 0.11255789, 2.8063698)
|
||||
|
||||
[node name="BarrelSimple44" parent="Barrels" unique_id=1888973294 instance=ExtResource("2_3o0md")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1928787, 0.11255789, 2.8063698)
|
||||
|
||||
[node name="Lobby_underground" parent="." unique_id=1313381882 instance=ExtResource("2_w7uyf")]
|
||||
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 0, 0, 0)
|
||||
script = ExtResource("4_73452")
|
||||
|
||||
[node name="Plane" parent="Lobby_underground" index="1" unique_id=1962555538]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2352347, 0)
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="Lobby_underground" unique_id=2070502042]
|
||||
root_node = NodePath("../..")
|
||||
libraries/ = SubResource("AnimationLibrary_6j2sa")
|
||||
|
||||
[node name="to_the_bear_level" type="Area3D" parent="." unique_id=267572930]
|
||||
collision_mask = 3
|
||||
script = ExtResource("5_6j2sa")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="to_the_bear_level" unique_id=2080871641]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.561888, 2.767395, 0.59606934)
|
||||
shape = SubResource("BoxShape3D_73452")
|
||||
|
||||
[node name="to_the_arena_level" type="Area3D" parent="." unique_id=293174522]
|
||||
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -2.7537346, 0, -1.2036956e-07)
|
||||
collision_mask = 3
|
||||
script = ExtResource("6_jmi3x")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="to_the_arena_level" unique_id=409491377]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.561888, 2.767395, 0.59606934)
|
||||
shape = SubResource("BoxShape3D_73452")
|
||||
|
||||
[editable path="Lobby_underground"]
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user