70 Commits

Author SHA1 Message Date
richard 34dc5b026e Lobby barrel-smash reward + roll/slam barrel destruction
Bull's boulder roll now homes on and ploughs through lobby barrels, and
the slam shockwave bursts them within its radius. HUD tallies barrels on
load and fires a confetti "WOooOoW!" + two gold bonus HP pips when the
last one breaks; gates open from run state as fights are cleared.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-03 01:38:57 +03:00
richard 5c1e881a53 Combat overhaul: charge/gore, bear ram, matador taunt reactions
Bull charge damage:
- Tunnel-proof swept detection (prev→now segment) for matador gore and bear
  ram, so a 66 m/s dash no longer skips clean over the thin HitArea.
- Horns-first cone (bull_gore_arc): running into an enemy only wounds it when
  charging roughly at it, not a sideways brush.
- Dash is a committed lunge: bypasses the horns cone AND the survival roll, so a
  dash connect is a guaranteed kill. Cruise charges keep a speed-scaled roll
  (mat_charge_pierce). Roll ability defers to its own pop (is_rolling guard).

Bear:
- Horns-first swept ram detection (edge-triggered: one charge = one wound);
  a tunnelling or point-blank charge now lands where body_entered wouldn't.
- Overhead smash lane extends faster (0.1s) and further (20 m).
- Leap slam launches the bull from anywhere in the circle (ring_frac 0).
- Removed stray-quote syntax errors that broke the script.

Matador:
- Collider-driven stab (BladeHitbox) with recovery beat + taunt-after-hit so it
  stops machine-gunning the bull.
- A taunting matador answers a charge: spear from range, sword up close.

Spear projectile masks the BULL layer so throws connect.

Tests: matador_charge/stab/spear/taunt_react, bear_ram/hitbox/fx (+ unified
_fake_bull stand-in). Trimmed verbose comments.

Note: bear claw-emitter/death work is still WIP (3 bear_boss_test failures).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-03 01:01:42 +03:00
siim 4efc6763f0 lobby little tweak 2026-09-01 21:34:02 +03:00
siim 76d4fee33c Lobby level gates trigger areas 2026-09-01 21:22:16 +03:00
siim 271be0b26b + torches 2026-09-01 08:58:56 +03:00
siim 98c6f1285a underground_lobby 2026-08-31 21:52:13 +03:00
siim 4d66df8c7e bear long range slam. and not rotating while attacking animore. but dash and movement damage not working now 2026-08-29 09:30:03 +03:00
siim 41f18cb5d6 bear fx v2 2026-08-28 21:43:59 +03:00
siim 6b6a926715 bear_fx 2026-08-28 20:23:13 +03:00
siim dae7ec06da barrel materials 2026-08-28 19:43:09 +03:00
siim 1eb06876e9 breakable barrels 2026-08-28 19:02:19 +03:00
richard 1021a07b04 Put dead matadors on a corpse collision layer
A killed matador's ragdoll shared the WORLD layer with the bull, so the
bull collided with the bodies and spazzed out on them. Give corpses a
dedicated CORPSE layer masked to itself, and tag the ground/walls with
CORPSE too (at level load, so it also reaches colliders baked into the
instanced GLB arenas). The corpse still rests on the arena, but the bull
— which only masks WORLD — passes straight through the bodies.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-27 23:27:10 +03:00
richard c365f76d80 Merge remote-tracking branch 'origin/main' 2026-08-27 21:34:23 +03:00
richard 32ac46f840 lobby cam 2026-08-27 21:34:18 +03:00
siim bd10d1789b bear max hp 30 2026-08-27 21:30:48 +03:00
siim 170d8ff3f1 siim timmimised väiksed 2026-08-27 21:15:36 +03:00
siim 550bf2c5ad adjustable wave size with debug parameter "mat_wave_size" 2026-08-27 20:36:00 +03:00
siim 02f3e283de landing. don't bounce! 2026-08-27 08:30:03 +03:00
siim 9123574947 crowd billbord placement + mat sword run fix 2026-08-26 22:32:30 +03:00
siim aadf59d2d0 lobby collisions 2026-08-26 21:09:41 +03:00
richard d57c3dc2a2 Merge remote-tracking branch 'origin/main' 2026-08-26 20:38:14 +03:00
richard 09ae6bfbf4 lobby level 2026-08-26 20:38:07 +03:00
richard 40c1b8e680 debug param save works, bull/bear hitbox 2026-08-26 20:37:50 +03:00
siim a1c77fed5e Update debug_params.gd 2026-08-26 20:02:23 +03:00
siim 1a8af92d88 matador attack fix 2026-08-26 19:53:43 +03:00
siim 8166a6c18e Merge branch 'main' of https://git.richard.work/siim/Bullosseum 2026-08-26 19:41:35 +03:00
siim 46d6dda325 capsule 2026-08-26 19:41:23 +03:00
richard fc9348551d fix sword holster 2026-08-26 19:18:52 +03:00
richard c4a19c7443 crowd markers, unsheathed sword correct 2026-08-26 19:13:39 +03:00
siim 95c4c0ddf9 BEAR ARENA UPDATE 2026-08-26 19:12:27 +03:00
siim 6a4f104655 bear arena model updeit 2026-08-26 18:30:09 +03:00
siim d4b67888d7 controller zoom with right stick 2026-08-26 18:12:12 +03:00
siim b177e0aee3 matadors dont come inside the player anymore with sword attack. also got rid of matador.gd dublicate.. that i made for testing animation 2026-08-26 08:39:40 +03:00
siim 2a6f4c0f7b bear_FX 2026-08-25 21:58:43 +03:00
siim 32d0c58f5c bear_ Call method track testing with spears 2026-08-25 08:49:44 +03:00
siim 251002ea7c bull and bear flashing red when take damage 2026-08-25 08:04:39 +03:00
siim 986496097f arena cleanup 2026-08-24 18:45:03 +03:00
siim d976deeb6a arena cleanup+tex modification 2026-08-24 18:41:34 +03:00
siim d632670092 +death animation bear 2026-08-24 08:36:48 +03:00
siim e1899e49f4 level lobby 2026-08-23 23:40:28 +03:00
siim 6f5f9e6bba ps1 filter tuun 2026-08-23 22:26:58 +03:00
siim 91cd027a98 adj 2026-08-23 22:05:57 +03:00
siim ef2fb24969 cooldowns increase 2026-08-23 21:39:19 +03:00
siim 4c75776c70 debug_param_cooldown adjusts 2026-08-23 21:28:19 +03:00
siim 7688084b7e spear update 2026-08-23 21:15:25 +03:00
richard ccc92f201f mobile support tweaks 2026-08-23 20:32:52 +03:00
richard 008650a87e Merge remote-tracking branch 'origin/main' 2026-08-23 17:34:05 +03:00
richard b9e3147519 Bear, level selector (to be removed), new matador spawn, new bear level, saving config updates source files 2026-08-23 17:33:47 +03:00
richard cdba320cbc bear 2026-08-23 17:33:32 +03:00
richard ee7b1617c1 Bear, level selector (to be removed), new matador spawn, new bear level, saving config updates source files 2026-08-23 17:33:15 +03:00
richard d749485126 Map screen version 2026-08-23 13:16:04 +03:00
richard 45427b7070 Merge remote-tracking branch 'origin/main' 2026-08-23 12:37:35 +03:00
richard d514435dd8 touch controls and hud 2026-08-23 12:37:30 +03:00
siim 3eb9fa50f3 +bear boss 2026-08-23 11:18:45 +03:00
siim aee900c009 bear boss, aga broken 2026-08-21 18:23:30 +03:00
siim 4cf714f516 Update spear.glb 2026-08-17 23:49:29 +03:00
siim b78736a1f4 icon update 2026-08-10 04:43:48 +03:00
siim 212263c858 credits tuun 2026-08-10 03:53:17 +03:00
siim 8c4eeb0861 cooldowns? 2026-08-10 03:30:53 +03:00
siim 95def2d527 loading text + fullscreen default 2026-08-10 01:04:57 +03:00
siim 9a43a9ff8b icon 2026-08-09 23:58:01 +03:00
siim 7238cbf49e death anim speed .8 2026-08-09 23:19:23 +03:00
siim 44c667f097 collision scale 2026-08-09 23:15:43 +03:00
siim 3cd347d420 walk anim, death anim ja loading screen 2026-08-09 23:05:55 +03:00
richard 6414b2e7cc uids 2026-08-09 19:40:39 +03:00
richard 56593c58cf Release 0.2.0: device-aware controls, spear, settings, shaders
Show touch controls only on touch platforms and keyboard hints only on
desktop, via a shared Controls.use_touch_ui() gate (is_touchscreen_available
is unreliable with emulate_touch_from_mouse). Bumps version to 0.2.0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-09 19:39:37 +03:00
richard ce6f3d7075 Deployment script update 2026-08-09 15:26:01 +03:00
siim a74182255b light tim 2026-08-08 11:47:36 +03:00
siim ebf5046461 credits 2026-07-30 20:21:10 +03:00
richard 271de1b045 ps1 filter variables, crowds 2026-07-30 15:12:22 +03:00
222 changed files with 29056 additions and 1613 deletions
+1 -1
View File
@@ -2,4 +2,4 @@ disable:
- class-definitions-order - class-definitions-order
- no-else-return - no-else-return
max-line-length: 120 max-line-length: 120
max-file-lines: 1200 max-file-lines: 3000
+93
View File
@@ -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
+1
View File
@@ -2,6 +2,7 @@ extends Node3D
func _ready() -> void: func _ready() -> void:
add_to_group(&"public") # excluded from debug overlays — see publikum_controller.gd
var anim := get_node_or_null(^"AnimationPlayer") as AnimationPlayer var anim := get_node_or_null(^"AnimationPlayer") as AnimationPlayer
if anim: if anim:
anim.play(&"Juubeldab") anim.play(&"Juubeldab")
BIN
View File
Binary file not shown.
+3 -2
View File
@@ -4,8 +4,9 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dk6xuwwa0mfpe" uid="uid://dk6xuwwa0mfpe"
path.s3tc="res://.godot/imported/Arena_sand.png-416de2afe03241df088061e1a5f831af.s3tc.ctex" path.s3tc="res://.godot/imported/Arena_sand.png-416de2afe03241df088061e1a5f831af.s3tc.ctex"
path.etc2="res://.godot/imported/Arena_sand.png-416de2afe03241df088061e1a5f831af.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
generator_parameters={ generator_parameters={
@@ -15,7 +16,7 @@ generator_parameters={
[deps] [deps]
source_file="res://Assets/Arena_sand.png" 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] [params]
+3 -2
View File
@@ -4,8 +4,9 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://b4gkpa7jypcsm" uid="uid://b4gkpa7jypcsm"
path.s3tc="res://.godot/imported/Arena_wall.png-e67bd4bbd2f60583bfc14dd8b7687eef.s3tc.ctex" path.s3tc="res://.godot/imported/Arena_wall.png-e67bd4bbd2f60583bfc14dd8b7687eef.s3tc.ctex"
path.etc2="res://.godot/imported/Arena_wall.png-e67bd4bbd2f60583bfc14dd8b7687eef.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
generator_parameters={ generator_parameters={
@@ -15,7 +16,7 @@ generator_parameters={
[deps] [deps]
source_file="res://Assets/Arena_wall.png" 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] [params]
+3 -2
View File
@@ -4,8 +4,9 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://yercpq3y2o0x" uid="uid://yercpq3y2o0x"
path.s3tc="res://.godot/imported/Arena_wood.png-b4ed20d66b4d375396b0be2f2f863d80.s3tc.ctex" path.s3tc="res://.godot/imported/Arena_wood.png-b4ed20d66b4d375396b0be2f2f863d80.s3tc.ctex"
path.etc2="res://.godot/imported/Arena_wood.png-b4ed20d66b4d375396b0be2f2f863d80.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
generator_parameters={ generator_parameters={
@@ -15,7 +16,7 @@ generator_parameters={
[deps] [deps]
source_file="res://Assets/Arena_wood.png" 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] [params]
BIN
View File
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ch1wqha62vhtb"
path="res://.godot/imported/IG_square.png-c38dd1a0a4601b6ff4ffec2910ed2ce0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/IG_square.png"
dest_files=["res://.godot/imported/IG_square.png-c38dd1a0a4601b6ff4ffec2910ed2ce0.ctex"]
[params]
compress/mode=0
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=false
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=1
Binary file not shown.
@@ -3,13 +3,13 @@
importer="scene" importer="scene"
importer_version=1 importer_version=1
type="PackedScene" type="PackedScene"
uid="uid://dxe72ig8gfbcg" uid="uid://cwmo5vh738x6w"
path="res://.godot/imported/arena model2026.glb-299db01cae891e5005f8ac1e6c83d0a6.scn" path="res://.godot/imported/Lobby_level.glb-a7e896ecf7377d9530a80d5e63140cc3.scn"
[deps] [deps]
source_file="res://Assets/arena model2026.glb" source_file="res://Assets/Lobby_level.glb"
dest_files=["res://.godot/imported/arena model2026.glb-299db01cae891e5005f8ac1e6c83d0a6.scn"] dest_files=["res://.godot/imported/Lobby_level.glb-a7e896ecf7377d9530a80d5e63140cc3.scn"]
[params] [params]
Binary file not shown.

After

Width:  |  Height:  |  Size: 598 KiB

+45
View File
@@ -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

+45
View File
@@ -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

+45
View File
@@ -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.
+45
View File
@@ -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

+45
View File
@@ -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.
+1 -1
View File
@@ -28,7 +28,7 @@ meshes/generate_lods=true
meshes/create_shadow_meshes=true meshes/create_shadow_meshes=true
meshes/light_baking=1 meshes/light_baking=1
meshes/lightmap_texel_size=0.2 meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false meshes/force_disable_compression=true
skins/use_named_skins=true skins/use_named_skins=true
animation/import=true animation/import=true
animation/fps=30 animation/fps=30
Binary file not shown.
+42
View File
@@ -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.
+45
View File
@@ -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.
+45
View File
@@ -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
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -28,7 +28,7 @@ meshes/generate_lods=true
meshes/create_shadow_meshes=true meshes/create_shadow_meshes=true
meshes/light_baking=1 meshes/light_baking=1
meshes/lightmap_texel_size=0.2 meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false meshes/force_disable_compression=true
skins/use_named_skins=true skins/use_named_skins=true
animation/import=true animation/import=true
animation/fps=30 animation/fps=30
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ml0ntjv5injp"
path="res://.godot/imported/bull_hud_bg.png-4645abe7114935a3d4a8e0f88ccce15c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/bull_hud_bg.png"
dest_files=["res://.godot/imported/bull_hud_bg.png-4645abe7114935a3d4a8e0f88ccce15c.ctex"]
[params]
compress/mode=0
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=false
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=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d166u18p3wqiy"
path="res://.godot/imported/crowd_clap_sheet.png-a110e7d663af8fcbe9ebf5de44188c85.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/crowd_clap_sheet.png"
dest_files=["res://.godot/imported/crowd_clap_sheet.png-a110e7d663af8fcbe9ebf5de44188c85.ctex"]
[params]
compress/mode=0
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=false
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=1
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 552 KiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dct1d88g015el"
path="res://.godot/imported/kleeps_v2.png-55aa0dd25620611263a8b3000c5e2a49.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/kleeps_v2.png"
dest_files=["res://.godot/imported/kleeps_v2.png-55aa0dd25620611263a8b3000c5e2a49.ctex"]
[params]
compress/mode=0
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=false
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=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bh5nuyudh7x44"
path="res://.godot/imported/loading_screen.png-253743b71eb7ab3f4f9e2b29cbabf407.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/loading_screen.png"
dest_files=["res://.godot/imported/loading_screen.png-253743b71eb7ab3f4f9e2b29cbabf407.ctex"]
[params]
compress/mode=0
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=false
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=1
+13
View File
@@ -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")
+1
View File
@@ -0,0 +1 @@
uid://cwbf7jfkr8j10
-5
View File
@@ -1,5 +0,0 @@
extends Node3D
func _ready() -> void:
$AnimationPlayer.play("Taunt")
-1
View File
@@ -1 +0,0 @@
uid://bn3xwnlktwdlf
BIN
View File
Binary file not shown.
+45
View File
@@ -0,0 +1,45 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://jepc74w8opbu"
path="res://.godot/imported/spear.glb-0139879d219c93f9dd35db2304db7d5d.scn"
[deps]
source_file="res://Assets/spear.glb"
dest_files=["res://.godot/imported/spear.glb-0139879d219c93f9dd35db2304db7d5d.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
+44
View File
@@ -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"]
+319
View File
@@ -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"]
+319
View File
@@ -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"]
+319
View File
@@ -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"]
+319
View File
@@ -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"]
+70
View File
@@ -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.
Binary file not shown.
+26 -3
View File
@@ -12,13 +12,27 @@ I am a **Godot 4.6+ expert**. I follow current best practices for GDScript, scen
| Path | Purpose | | 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.tscn` | Player scene root (`CharacterBody3D`) |
| `player.gd` | Movement, charge, turning logic | | `player.gd` | Movement, charge, turning logic |
| `camera_spring_arm.gd` | Mouse-look pivot (`Node3D` + `SpringArm3D`) | | `camera_spring_arm.gd` | Mouse-look pivot (`Node3D` + `SpringArm3D`) |
| `camera_follow.gd` | Smooth camera follow (`Camera3D`) | | `camera_follow.gd` | Smooth camera follow (`Camera3D`) |
| `matador.gd` | Matador AI (wander / ragdoll state machine) | | `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`) | | `debug_params.gd` | Runtime-tunable parameter registry (autoload `DP`) |
| `Assets/` | Raw 3D assets (`.glb`, `.fbx`) | | `Assets/` | Raw 3D assets (`.glb`, `.fbx`) |
| `Blender/` | Blender source files, animation scripts, FBX exports | | `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 bash run_tests.sh
# Individual tests: # 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/logic_test.gd # pure logic, ~2 s
godot --headless --script tests/performance_test.gd # frame-budget regression guard, ~4 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/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): # Gameplay test with real rendering (inspect frame strip visually):
godot --script tests/gameplay_test.gd # opens a window, saves real screenshots godot --script tests/gameplay_test.gd # opens a window, saves real screenshots
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bxm7c6ldrdiq5" uid="uid://bxm7c6ldrdiq5"
path.bptc="res://.godot/imported/citrus_orchard_road_puresky_4k.hdr-262868e8787abf05f7044da72beefce7.bptc.ctex" 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={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://HDRI/citrus_orchard_road_puresky_4k.hdr" 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] [params]
+3 -2
View File
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://3syhacswepyj" uid="uid://3syhacswepyj"
path.bptc="res://.godot/imported/kloppenheim_06_puresky_4k.hdr-026f0eabdfce50035e2f8417ce3e0060.bptc.ctex" 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={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://HDRI/kloppenheim_06_puresky_4k.hdr" 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] [params]
-137
View File
@@ -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, 1269629432) index="0" unique_id=978366810]
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=256196413]
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=988244930]
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"]
+95 -40
View File
@@ -1,7 +1,13 @@
[gd_scene load_steps=5 format=3 uid="uid://bmnmenu0intr1"] [gd_scene format=3 uid="uid://bmnmenu0intr1"]
[ext_resource type="Script" path="res://main_menu.gd" id="1_menu"] [ext_resource type="Script" uid="uid://46y10alai56q" path="res://main_menu.gd" id="1_menu"]
[ext_resource type="VideoStream" path="res://Assets/intro_bg.ogv" id="2_video"] [ext_resource type="VideoStream" uid="uid://csxxlnq74fej4" path="res://Assets/intro_bg.ogv" id="2_video"]
[ext_resource type="Shader" uid="uid://bmdtg6qlh7wri" path="res://menu_blur.gdshader" id="3_blur"]
[sub_resource type="ShaderMaterial" id="mat_blur"]
shader = ExtResource("3_blur")
shader_parameter/blur_radius = 3.0
shader_parameter/darken = 0.35
[sub_resource type="StyleBoxFlat" id="sb_normal"] [sub_resource type="StyleBoxFlat" id="sb_normal"]
content_margin_left = 16.0 content_margin_left = 16.0
@@ -30,7 +36,7 @@ corner_radius_top_right = 8
corner_radius_bottom_right = 8 corner_radius_bottom_right = 8
corner_radius_bottom_left = 8 corner_radius_bottom_left = 8
[node name="MainMenu" type="Control"] [node name="MainMenu" type="Control" unique_id=371457725]
layout_mode = 3 layout_mode = 3
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
@@ -39,29 +45,54 @@ grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = ExtResource("1_menu") script = ExtResource("1_menu")
[node name="VideoStreamPlayer" type="VideoStreamPlayer" parent="."] [node name="VideoBlur" type="AspectRatioContainer" parent="." unique_id=374854263]
layout_mode = 1 layout_mode = 1
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
mouse_filter = 2
ratio = 1.7778
stretch_mode = 3
[node name="BlurVideo" type="VideoStreamPlayer" parent="VideoBlur" unique_id=374854262]
material = SubResource("mat_blur")
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
mouse_filter = 2
stream = ExtResource("2_video") stream = ExtResource("2_video")
expand = true expand = true
[node name="MainPanel" type="Control" parent="."] [node name="VideoAspect" type="AspectRatioContainer" parent="." unique_id=374854264]
layout_mode = 1 layout_mode = 1
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
mouse_filter = 2
ratio = 1.7778
[node name="PlayButton" type="Button" parent="MainPanel"] [node name="VideoStreamPlayer" type="VideoStreamPlayer" parent="VideoAspect" unique_id=374854265]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
mouse_filter = 2
stream = ExtResource("2_video")
expand = true
[node name="CapeLayer" type="Control" parent="VideoAspect" unique_id=374854266]
layout_mode = 2
mouse_filter = 2
[node name="PlayButton" type="Button" parent="VideoAspect/CapeLayer" unique_id=743089847]
layout_mode = 1 layout_mode = 1
anchor_left = 0.4530 anchors_preset = -1
anchor_left = 0.453
anchor_top = 0.6513 anchor_top = 0.6513
anchor_right = 0.4530 anchor_right = 0.453
anchor_bottom = 0.6513 anchor_bottom = 0.6513
offset_left = -120.0 offset_left = -120.0
offset_top = -55.0 offset_top = -55.0
@@ -74,13 +105,23 @@ theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 8 theme_override_constants/outline_size = 8
theme_override_font_sizes/font_size = 56 theme_override_font_sizes/font_size = 56
theme_override_styles/normal = SubResource("sb_normal") theme_override_styles/normal = SubResource("sb_normal")
theme_override_styles/hover = SubResource("sb_hover")
theme_override_styles/pressed = SubResource("sb_hover") theme_override_styles/pressed = SubResource("sb_hover")
theme_override_styles/hover = SubResource("sb_hover")
theme_override_styles/focus = SubResource("sb_hover") theme_override_styles/focus = SubResource("sb_hover")
text = "PLAY" text = "PLAY"
[node name="OptionsButton" type="Button" parent="MainPanel"] [node name="MainPanel" type="Control" parent="." unique_id=1263320918]
layout_mode = 1 layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
[node name="OptionsButton" type="Button" parent="MainPanel" unique_id=673211179]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.11 anchor_left = 0.11
anchor_top = 0.94 anchor_top = 0.94
anchor_right = 0.11 anchor_right = 0.11
@@ -96,13 +137,14 @@ theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 6 theme_override_constants/outline_size = 6
theme_override_font_sizes/font_size = 30 theme_override_font_sizes/font_size = 30
theme_override_styles/normal = SubResource("sb_normal") theme_override_styles/normal = SubResource("sb_normal")
theme_override_styles/hover = SubResource("sb_hover")
theme_override_styles/pressed = SubResource("sb_hover") theme_override_styles/pressed = SubResource("sb_hover")
theme_override_styles/hover = SubResource("sb_hover")
theme_override_styles/focus = SubResource("sb_hover") theme_override_styles/focus = SubResource("sb_hover")
text = "OPTIONS" text = "OPTIONS"
[node name="CreditsButton" type="Button" parent="MainPanel"] [node name="CreditsButton" type="Button" parent="MainPanel" unique_id=882339461]
layout_mode = 1 layout_mode = 1
anchors_preset = -1
anchor_left = 0.489 anchor_left = 0.489
anchor_top = 0.951 anchor_top = 0.951
anchor_right = 0.489 anchor_right = 0.489
@@ -118,13 +160,14 @@ theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 6 theme_override_constants/outline_size = 6
theme_override_font_sizes/font_size = 30 theme_override_font_sizes/font_size = 30
theme_override_styles/normal = SubResource("sb_normal") theme_override_styles/normal = SubResource("sb_normal")
theme_override_styles/hover = SubResource("sb_hover")
theme_override_styles/pressed = SubResource("sb_hover") theme_override_styles/pressed = SubResource("sb_hover")
theme_override_styles/hover = SubResource("sb_hover")
theme_override_styles/focus = SubResource("sb_hover") theme_override_styles/focus = SubResource("sb_hover")
text = "CREDITS" text = "CREDITS"
[node name="ExitButton" type="Button" parent="MainPanel"] [node name="ExitButton" type="Button" parent="MainPanel" unique_id=1064586744]
layout_mode = 1 layout_mode = 1
anchors_preset = -1
anchor_left = 0.92 anchor_left = 0.92
anchor_top = 0.951 anchor_top = 0.951
anchor_right = 0.92 anchor_right = 0.92
@@ -140,12 +183,12 @@ theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 6 theme_override_constants/outline_size = 6
theme_override_font_sizes/font_size = 30 theme_override_font_sizes/font_size = 30
theme_override_styles/normal = SubResource("sb_normal") theme_override_styles/normal = SubResource("sb_normal")
theme_override_styles/hover = SubResource("sb_hover")
theme_override_styles/pressed = SubResource("sb_hover") theme_override_styles/pressed = SubResource("sb_hover")
theme_override_styles/hover = SubResource("sb_hover")
theme_override_styles/focus = SubResource("sb_hover") theme_override_styles/focus = SubResource("sb_hover")
text = "EXIT" text = "EXIT"
[node name="OptionsPanel" type="CenterContainer" parent="."] [node name="OptionsPanel" type="CenterContainer" parent="." unique_id=593823446]
visible = false visible = false
layout_mode = 1 layout_mode = 1
anchors_preset = 15 anchors_preset = 15
@@ -154,17 +197,17 @@ anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
[node name="Backdrop" type="ColorRect" parent="OptionsPanel"] [node name="Backdrop" type="ColorRect" parent="OptionsPanel" unique_id=1811982549]
layout_mode = 2 layout_mode = 2
color = Color(0, 0, 0, 0.55)
mouse_filter = 2 mouse_filter = 2
color = Color(0, 0, 0, 0.55)
[node name="VBox" type="VBoxContainer" parent="OptionsPanel"] [node name="VBox" type="VBoxContainer" parent="OptionsPanel" unique_id=2125052135]
custom_minimum_size = Vector2(560, 480) custom_minimum_size = Vector2(560, 480)
layout_mode = 2 layout_mode = 2
theme_override_constants/separation = 16 theme_override_constants/separation = 16
[node name="TitleLabel" type="Label" parent="OptionsPanel/VBox"] [node name="TitleLabel" type="Label" parent="OptionsPanel/VBox" unique_id=853979265]
layout_mode = 2 layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1) theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 8 theme_override_constants/outline_size = 8
@@ -172,31 +215,32 @@ theme_override_font_sizes/font_size = 44
text = "Controls" text = "Controls"
horizontal_alignment = 1 horizontal_alignment = 1
[node name="Hint" type="Label" parent="OptionsPanel/VBox"] [node name="Hint" type="Label" parent="OptionsPanel/VBox" unique_id=1809504670]
layout_mode = 2 layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1) theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 4 theme_override_constants/outline_size = 5
theme_override_font_sizes/font_size = 20
text = "Click a key, then press a new key. Esc cancels." text = "Click a key, then press a new key. Esc cancels."
horizontal_alignment = 1 horizontal_alignment = 1
[node name="Scroll" type="ScrollContainer" parent="OptionsPanel/VBox"] [node name="Scroll" type="ScrollContainer" parent="OptionsPanel/VBox" unique_id=683738956]
custom_minimum_size = Vector2(0, 340) custom_minimum_size = Vector2(0, 340)
layout_mode = 2 layout_mode = 2
size_flags_vertical = 3 size_flags_vertical = 3
horizontal_scroll_mode = 0 horizontal_scroll_mode = 0
[node name="RebindList" type="VBoxContainer" parent="OptionsPanel/VBox/Scroll"] [node name="RebindList" type="VBoxContainer" parent="OptionsPanel/VBox/Scroll" unique_id=1261520279]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
theme_override_constants/separation = 8 theme_override_constants/separation = 8
[node name="BackButton" type="Button" parent="OptionsPanel/VBox"] [node name="BackButton" type="Button" parent="OptionsPanel/VBox" unique_id=1587524951]
custom_minimum_size = Vector2(0, 48) custom_minimum_size = Vector2(0, 48)
layout_mode = 2 layout_mode = 2
theme_override_font_sizes/font_size = 24 theme_override_font_sizes/font_size = 24
text = "Back" text = "Back"
[node name="CreditsPanel" type="CenterContainer" parent="."] [node name="CreditsPanel" type="CenterContainer" parent="." unique_id=175743902]
visible = false visible = false
layout_mode = 1 layout_mode = 1
anchors_preset = 15 anchors_preset = 15
@@ -205,17 +249,17 @@ anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
[node name="Backdrop" type="ColorRect" parent="CreditsPanel"] [node name="Backdrop" type="ColorRect" parent="CreditsPanel" unique_id=1950253735]
layout_mode = 2 layout_mode = 2
color = Color(0, 0, 0, 0.55)
mouse_filter = 2 mouse_filter = 2
color = Color(0, 0, 0, 0.55)
[node name="VBox" type="VBoxContainer" parent="CreditsPanel"] [node name="VBox" type="VBoxContainer" parent="CreditsPanel" unique_id=901836808]
custom_minimum_size = Vector2(520, 360) custom_minimum_size = Vector2(520, 360)
layout_mode = 2 layout_mode = 2
theme_override_constants/separation = 20 theme_override_constants/separation = 20
[node name="TitleLabel" type="Label" parent="CreditsPanel/VBox"] [node name="TitleLabel" type="Label" parent="CreditsPanel/VBox" unique_id=825593160]
layout_mode = 2 layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1) theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 8 theme_override_constants/outline_size = 8
@@ -223,25 +267,36 @@ theme_override_font_sizes/font_size = 44
text = "Credits" text = "Credits"
horizontal_alignment = 1 horizontal_alignment = 1
[node name="Names" type="Label" parent="CreditsPanel/VBox"] [node name="Names" type="RichTextLabel" parent="CreditsPanel/VBox" unique_id=1355198629]
layout_mode = 2 layout_mode = 2
size_flags_vertical = 3 size_flags_vertical = 3
theme_override_colors/default_color = Color(0.93, 0.88, 0.72, 1)
theme_override_colors/font_outline_color = Color(0, 0, 0, 1) theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 4 theme_override_constants/line_separation = 6
theme_override_font_sizes/font_size = 24 theme_override_constants/outline_size = 5
text = "Bullosseum theme_override_font_sizes/normal_font_size = 26
theme_override_font_sizes/bold_font_size = 30
bbcode_enabled = true
text = "[center][font_size=32][color=#d9a833]Bullosseum[/color][/font_size]
A game by Siim & Richard" [b][color=#d9a833]Siim Raud[/color][/b] [url=https://instagram.com/siimpressionist]@siimpressionist[/url]
horizontal_alignment = 1 [font_size=20]Artist / Animator[/font_size]
vertical_alignment = 1
[node name="BackButton" type="Button" parent="CreditsPanel/VBox"] [b][color=#d9a833]Richard Aasa[/color][/b] [url=https://instagram.com/aasarichard]@aasarichard[/url]
[font_size=20]Programmer[/font_size]
[b][color=#d9a833]Kadi Rebane[/color][/b] [url=https://x.com/_barkseven]@_barkseven[/url]
[font_size=20]Arena asset[/font_size][/center]"
fit_content = true
scroll_active = false
[node name="BackButton" type="Button" parent="CreditsPanel/VBox" unique_id=1194791074]
custom_minimum_size = Vector2(0, 48) custom_minimum_size = Vector2(0, 48)
layout_mode = 2 layout_mode = 2
theme_override_font_sizes/font_size = 24 theme_override_font_sizes/font_size = 24
text = "Back" text = "Back"
[node name="FadeRect" type="ColorRect" parent="."] [node name="FadeRect" type="ColorRect" parent="." unique_id=15381366]
layout_mode = 1 layout_mode = 1
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
+7 -8
View File
@@ -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"] [ext_resource type="PackedScene" uid="uid://eu2lqjhowj4t" path="res://Assets/Matador.glb" id="2_matfbx"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_body"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_body"]
@@ -11,19 +11,18 @@ height = 1.2
radius = 0.45 radius = 0.45
height = 1.4 height = 1.4
[node name="Matador" type="CharacterBody3D"] [node name="Matador" type="CharacterBody3D" unique_id=1781857630]
script = ExtResource("1_matgd") 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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.85, 0)
shape = SubResource("CapsuleShape3D_body") shape = SubResource("CapsuleShape3D_body")
[node name="HitArea" type="Area3D" parent="."] [node name="HitArea" type="Area3D" parent="." unique_id=745037545]
monitoring = true
monitorable = false 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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.85, 0)
shape = SubResource("CapsuleShape3D_hit") shape = SubResource("CapsuleShape3D_hit")
[node name="matador2" parent="." instance=ExtResource("2_matfbx")] [node name="matador2" parent="." unique_id=1487256381 instance=ExtResource("2_matfbx")]
+5
View File
@@ -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
+14
View File
@@ -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.
//}
+1
View File
@@ -0,0 +1 @@
uid://bme1rkldtyrhu
+4
View File
@@ -0,0 +1,4 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://isrp2y47xs5x"]
[resource]
albedo_color = Color(0.49425018, 0.31969637, 0.21259204, 1)
+5
View File
@@ -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)
+5
View File
@@ -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)
+34 -20
View File
@@ -4,30 +4,18 @@
[ext_resource type="Script" uid="uid://cpyq2r5cq653g" path="res://camera_iso.gd" id="2_camera_iso"] [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"] [ext_resource type="PackedScene" uid="uid://bun14xmk20pcj" path="res://Assets/bull.fbx" id="4_e80uo"]
[sub_resource type="SphereShape3D" id="SphereShape3D_chest"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_kne1u"]
radius = 0.35 radius = 0.7495117
height = 1.845398
[sub_resource type="SphereShape3D" id="SphereShape3D_belly"]
radius = 0.4
[sub_resource type="SphereShape3D" id="SphereShape3D_hips"]
radius = 0.3
[node name="Player" type="CharacterBody3D" unique_id=165510044] [node name="Player" type="CharacterBody3D" unique_id=165510044]
collision_layer = 3 collision_layer = 2
collision_mask = 9
script = ExtResource("1_xhfnw") script = ExtResource("1_xhfnw")
[node name="CollisionChest" type="CollisionShape3D" parent="." unique_id=447032296] [node name="CollisionBull" type="CollisionShape3D" parent="." unique_id=571780801]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.505, -0.2) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.29183745, 0.3197594)
shape = SubResource("SphereShape3D_chest") shape = SubResource("CapsuleShape3D_kne1u")
[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="Camera3D" type="Camera3D" parent="." unique_id=1120161087] [node name="Camera3D" type="Camera3D" parent="." unique_id=1120161087]
script = ExtResource("2_camera_iso") script = ExtResource("2_camera_iso")
@@ -35,4 +23,30 @@ script = ExtResource("2_camera_iso")
[node name="bull" parent="." unique_id=1386495166 instance=ExtResource("4_e80uo")] [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) 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, 1942410469) index="0" unique_id=550138996]
bones/0/position = Vector3(0, 0, 0.009963839)
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"] [editable path="bull"]
+15
View File
@@ -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
View File
@@ -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")
+1 -1
View File
@@ -8,5 +8,5 @@ script="rider-plugin.gd"
[presets] [presets]
active="off" active="on"
presets="presets.json" presets="presets.json"
+1109
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -0,0 +1 @@
uid://cn7fhjkro7637
-9
View File
@@ -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
View File
@@ -1 +0,0 @@
uid://b720l6m0ehrj3
+26 -3
View File
@@ -1,3 +1,4 @@
class_name IsoCamera
extends Camera3D extends Camera3D
@export var height: float = 25.0 @export var height: float = 25.0
@@ -16,6 +17,11 @@ var _shake_amount: float = 0.0
var _shake_decay: float = 0.0 var _shake_decay: float = 0.0
var _user_fov: 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 # 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. # the bull), _drag_offset is the velocity-driven trail that slides it behind.
var _focus: Vector3 = Vector3.ZERO 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) _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: func _process(delta: float) -> void:
fov = lerpf(fov, _user_fov, delta * 8.0) fov = lerpf(fov, _user_fov, delta * 8.0)
var angle_rad := deg_to_rad(horizontal_angle_deg) var angle_rad := deg_to_rad(horizontal_angle_deg)
var offset := Vector3( var offset := Vector3(
sin(angle_rad) * horizontal_distance, sin(angle_rad) * horizontal_distance * _framing_scale,
height, height * _framing_scale,
cos(angle_rad) * horizontal_distance cos(angle_rad) * horizontal_distance * _framing_scale
) )
var target := get_parent() as Node3D var target := get_parent() as Node3D
@@ -92,6 +113,8 @@ func _drag_focus(target: Node3D, delta: float) -> Vector3:
func trigger_hit(strength: float) -> void: func trigger_hit(strength: float) -> void:
if not Settings.screen_shake:
return
_shake_amount = strength * 0.5 _shake_amount = strength * 0.5
_shake_decay = _shake_amount / 0.4 _shake_decay = _shake_amount / 0.4
-39
View File
@@ -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
View File
@@ -1 +0,0 @@
uid://b4td4k8yo5y78
+64 -5
View File
@@ -18,6 +18,8 @@ const _COMMANDS := {
"diff": "list params changed from default", "diff": "list params changed from default",
"toggle": "flip a bool param", "toggle": "flip a bool param",
"list": "print params (optional section)", "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", "clear": "clear the log",
"help": "show this help", "help": "show this help",
} }
@@ -172,6 +174,18 @@ func _input(event: InputEvent) -> void:
if not _is_open: if not _is_open:
return return
# Ctrl+C clears the input line, Ctrl+L clears the log — familiar shell reflexes.
if ke.ctrl_pressed:
match ke.keycode:
KEY_C:
_clear_input()
get_viewport().set_input_as_handled()
return
KEY_L:
_log.clear()
get_viewport().set_input_as_handled()
return
match ke.keycode: match ke.keycode:
KEY_TAB: KEY_TAB:
_accept_completion() _accept_completion()
@@ -187,6 +201,20 @@ func _input(event: InputEvent) -> void:
get_viewport().set_input_as_handled() get_viewport().set_input_as_handled()
# Focus can be stolen a frame or more after we re-grab it (submit, arrows, the tree
# unpausing), so a one-shot deferred grab loses the race. Enforce it every frame
# while the console is open — cheap, and it never lets the command line go dark.
func _process(_delta: float) -> void:
if _is_open and not _input_field.has_focus():
# Diagnostic: name whatever currently holds focus before we snatch it back, so
# a persistent thief (a HUD button, a menu control) shows up in the log instead
# of us guessing. Remove once the culprit is identified.
var owner: Control = get_viewport().gui_get_focus_owner()
var who: String = String(owner.name) if owner != null else "<nothing>"
_log_warn("focus stolen by %s — reclaiming" % who)
_input_field.grab_focus()
func _toggle() -> void: func _toggle() -> void:
_is_open = not _is_open _is_open = not _is_open
get_tree().paused = _is_open get_tree().paused = _is_open
@@ -381,6 +409,15 @@ func _history_step(dir: int) -> void:
_set_input(_pending_line if _history_idx == -1 else _history[_history_idx]) _set_input(_pending_line if _history_idx == -1 else _history[_history_idx])
# Wipe the live line (Ctrl+C) without submitting — also drops any suggestion popup
# and resets history browsing so the next ↑ starts fresh.
func _clear_input() -> void:
_input_field.clear()
_history_idx = -1
_pending_line = ""
_clear_suggestions()
func _set_input(text: String) -> void: func _set_input(text: String) -> void:
_input_field.text = text _input_field.text = text
_input_field.caret_column = text.length() _input_field.caret_column = text.length()
@@ -400,9 +437,6 @@ func _on_submitted(raw: String) -> void:
_input_field.clear() _input_field.clear()
_clear_suggestions() _clear_suggestions()
_execute(raw) _execute(raw)
# Defer: the LineEdit finishes handling the Enter keypress after this signal
# returns, so a synchronous grab_focus() gets clobbered. Re-grab next idle.
_input_field.grab_focus.call_deferred()
func _execute(cmd: String) -> void: func _execute(cmd: String) -> void:
@@ -440,6 +474,12 @@ func _run_command(parts: PackedStringArray) -> bool:
_cmd_diff() _cmd_diff()
"list": "list":
_cmd_list(parts) _cmd_list(parts)
"level":
_cmd_level(parts)
"restart":
_log_ok("Restarting…")
get_tree().paused = false
get_tree().reload_current_scene()
"clear": "clear":
_log.clear() _log.clear()
"help": "help":
@@ -549,9 +589,9 @@ func _set_param(key: String, meta: Dictionary, raw: String) -> void:
var lo := meta["min"] as float var lo := meta["min"] as float
var hi := meta["max"] as float var hi := meta["max"] as float
if not raw.is_valid_float() or not is_finite(raw.to_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 return
var v := snappedf(clampf(raw.to_float(), lo, hi), meta["step"] as float) var v := raw.to_float()
DP.set_value(key, v) DP.set_value(key, v)
_log_ok("[b]%s[/b] ← [color=#ffe080]%s[/color]" % [key, _fmt_num(v)]) _log_ok("[b]%s[/b] ← [color=#ffe080]%s[/color]" % [key, _fmt_num(v)])
elif meta["type"] == TYPE_BOOL: elif meta["type"] == TYPE_BOOL:
@@ -568,6 +608,25 @@ func _set_param(key: String, meta: Dictionary, raw: String) -> void:
_log_warn("Cannot set param of type %d" % meta["type"]) _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: func _cmd_list(parts: PackedStringArray) -> void:
var filter := parts[1].to_lower() if parts.size() > 1 else "" var filter := parts[1].to_lower() if parts.size() > 1 else ""
var all := DP.get_all() var all := DP.get_all()
+93 -1
View File
@@ -15,8 +15,8 @@ const REBINDABLE_ACTIONS: PackedStringArray = [
&"move_left", &"move_left",
&"move_right", &"move_right",
&"ability_kick", &"ability_kick",
&"ability_slam",
&"ability_dash", &"ability_dash",
&"ability_slam",
&"ability_roll", &"ability_roll",
] ]
@@ -25,6 +25,98 @@ func _ready() -> void:
load_saved() 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. 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
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. ## Returns the first keyboard event bound to an action, or null.
func get_key_event(action: StringName) -> InputEventKey: func get_key_event(action: StringName) -> InputEventKey:
for event: InputEvent in InputMap.action_get_events(action): for event: InputEvent in InputMap.action_get_events(action):
+35
View File
@@ -0,0 +1,35 @@
shader_type spatial;
// Flat crowd sprite. Each instance is oriented at build time to face the arena centre
// (see crowd_billboards.gd) — NOT the camera — so spectators on different segments of
// the ring face inward toward the action, like a real stand. Unshaded (the sheet was
// baked with lighting), alpha-tested (no transparency sorting across hundreds of
// quads), nearest-filtered for a crisp PS1 look that matches the ps1_filter effect.
render_mode unshaded, cull_disabled, shadows_disabled, depth_draw_opaque;
uniform sampler2D sheet : source_color, filter_nearest;
uniform int hframes = 8;
uniform float fps = 10.0;
uniform float alpha_clip = 0.4;
varying flat float v_frame;
varying flat vec3 v_tint;
void vertex() {
// Per-instance clap phase (0..1) and tint are packed into the MultiMesh custom data.
// The instance transform already carries the inward facing, so no billboard maths.
float phase = INSTANCE_CUSTOM.x;
v_tint = INSTANCE_CUSTOM.yzw;
v_frame = floor(mod(TIME * fps + phase * float(hframes), float(hframes)));
}
void fragment() {
// Sheet is two rows: top = front, bottom = back. Show the back when the camera is
// behind the spectator (they're facing into the arena, away from us).
float u = (UV.x + v_frame) / float(hframes);
float v = UV.y * 0.5 + (FRONT_FACING ? 0.0 : 0.5);
vec4 c = texture(sheet, vec2(u, v));
if (c.a < alpha_clip) {
discard;
}
ALBEDO = c.rgb * v_tint;
}
+1
View File
@@ -0,0 +1 @@
uid://hkdivctavovb
+119
View File
@@ -0,0 +1,119 @@
extends MultiMeshInstance3D
## 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 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"
## 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
@export var clap_fps: float = 10.0
## Subtle per-spectator brightness spread so the crowd doesn't read as clones.
@export_range(0.0, 0.5) var tint_variation: float = 0.18
# Fallback tribune (used only when source_path resolves to nothing) — concentric arcs
# of seats ringing the arena.
@export_group("Fallback stand")
@export var fallback_count: int = 120
@export var fallback_inner_radius: float = 26.0
@export var fallback_rows: int = 6
@export var fallback_row_rise: float = 1.6
@export var fallback_row_step: float = 2.2
@export var fallback_seat_step: float = 2.4
var _rng := RandomNumberGenerator.new()
func _ready() -> void:
_rng.seed = hash("bullosseum-crowd") # deterministic layout/phases across runs
# Deferred so every CrowdMarker has run _ready and joined the group before we harvest.
_build.call_deferred()
func _build() -> void:
var sheet := load(SHEET_PATH) as Texture2D
if sheet == null:
push_warning("crowd_billboards: missing sheet %s — run tools/bake_crowd_sheet.gd" % SHEET_PATH)
return
# Sheet holds `frames` columns and 2 rows (front / back), so a cell is half-height.
var aspect := (float(sheet.get_width()) / float(frames)) / (float(sheet.get_height()) / 2.0)
var quad := QuadMesh.new()
quad.size = Vector2(figure_height * aspect, figure_height)
quad.center_offset = Vector3(0.0, figure_height * 0.5, 0.0) # pivot at the feet
var mat := ShaderMaterial.new()
mat.shader = load(SHADER_PATH) as Shader
mat.set_shader_parameter("sheet", sheet)
mat.set_shader_parameter("hframes", frames)
mat.set_shader_parameter("fps", clap_fps)
material_override = mat
# 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 = positions.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(_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
# 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)
var up := Vector3.UP
var basis := Basis()
basis.x = up.cross(look).normalized()
basis.y = up
basis.z = look
return basis.scaled(Vector3.ONE * s)
# 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)
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
var y := float(row) * fallback_row_rise
var circumference := TAU * radius
var seats_in_row := int(circumference / fallback_seat_step)
for s in seats_in_row:
if placed >= fallback_count:
return
var ang := TAU * float(s) / float(seats_in_row)
var pos := Vector3(cos(ang) * radius, y, sin(ang) * radius)
positions.append(pos)
facings.append(-pos) # face the ring centre (origin)
placed += 1
+1
View File
@@ -0,0 +1 @@
uid://cj0ytlkuavmf4
+89
View File
@@ -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
+1
View File
@@ -0,0 +1 @@
uid://70j3ks1emhkd
+16
View File
@@ -0,0 +1,16 @@
shader_type canvas_item;
// Faint red gradient hugging the screen edges, flashed on a hit. `flash` is tweened
// 0.9 → 0 by the HUD; the vignette is transparent in the centre and reddens toward
// the corners so the middle of the screen stays clear.
uniform float flash : hint_range(0.0, 1.0) = 0.0;
uniform vec3 tint : source_color = vec3(0.75, 0.0, 0.0);
uniform float inner : hint_range(0.0, 1.0) = 0.45;
uniform float outer : hint_range(0.0, 1.0) = 1.0;
void fragment() {
// Distance from centre normalised so the corners land at ~1.0.
float dist = length(UV - vec2(0.5)) / 0.70710678;
float v = smoothstep(inner, outer, dist);
COLOR = vec4(tint, v * flash);
}

Some files were not shown because too many files have changed in this diff Show More