Basic pathing for grunkbeast

This commit is contained in:
Rob Kelly 2025-04-16 17:20:33 -06:00
parent f695ef846c
commit 27ec21745b
30 changed files with 2141 additions and 1335 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
extends Node3D
@onready var grunk_beast: GrunkBeast = %GrunkBeast
@onready var grunk_beast: ProceduralGrunkBeast = %GrunkBeast
func _process(_delta: float) -> void:

View File

@ -1,6 +1,6 @@
[gd_scene load_steps=12 format=3 uid="uid://cbxlfnlmgdvsq"]
[ext_resource type="PackedScene" uid="uid://d2664rpg4losx" path="res://src/world/grunk_beast/grunk_beast.tscn" id="1_6yv42"]
[ext_resource type="PackedScene" uid="uid://d2664rpg4losx" path="res://src/world/procedural_grunk_beast/procedural_grunk_beast.tscn" id="1_6yv42"]
[ext_resource type="Script" uid="uid://bukihqt1lybnx" path="res://src/util/frame_skipper.gd" id="1_eco5q"]
[ext_resource type="Script" uid="uid://b1tbovuphat7d" path="res://levels/grunkbeast_test/grunkbeast_test.gd" id="1_ovhaj"]
[ext_resource type="Script" uid="uid://cpt8dy0csa3eu" path="res://levels/grunkbeast_test/fixed_camera.gd" id="2_77sam"]

View File

@ -1,10 +1,61 @@
[gd_scene load_steps=4 format=3 uid="uid://8m6kh4f6pily"]
[gd_scene load_steps=11 format=3 uid="uid://8m6kh4f6pily"]
[ext_resource type="Script" uid="uid://1trqaximxxmx" path="res://src/world/meet_spook/meet_spook_mob.gd" id="1_545xt"]
[ext_resource type="Material" uid="uid://dutkfm4ek0ysh" path="res://assets/materials/gunk_bright.material" id="2_2vvgf"]
[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk.gdshader" id="2_pte10"]
[ext_resource type="Texture2D" uid="uid://cm1jrvx7ftx4c" path="res://assets/black.png" id="3_iy8jq"]
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="4_67wo7"]
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_2roq2"]
width = 256
height = 256
depth = 32
seamless = true
seamless_blend_skirt = 0.5
noise = ExtResource("4_67wo7")
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_fk1xc"]
width = 256
height = 256
depth = 32
seamless = true
seamless_blend_skirt = 0.5
noise = ExtResource("4_67wo7")
[sub_resource type="FastNoiseLite" id="FastNoiseLite_pte10"]
frequency = 0.0703
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_omayi"]
width = 32
height = 32
depth = 128
noise = SubResource("FastNoiseLite_pte10")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_iy8jq"]
resource_local_to_scene = true
render_priority = 0
shader = ExtResource("2_pte10")
shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
shader_parameter/emission_color = Color(0.25, 0.88, 1, 1)
shader_parameter/pixellation = 128.0
shader_parameter/time_pixellation = 30.0
shader_parameter/roughness = 0.15
shader_parameter/specular_contribution = 0.8
shader_parameter/emission_strength = 0.1
shader_parameter/uv_scale = Vector2(4, 4)
shader_parameter/time_scale = 1.0
shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = ExtResource("3_iy8jq")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/jitter_magnitude = 0.6
shader_parameter/jitter_time_scale = 0.2
shader_parameter/jitter_noise = SubResource("NoiseTexture3D_omayi")
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="CapsuleMesh" id="CapsuleMesh_k8gi4"]
material = ExtResource("2_2vvgf")
material = SubResource("ShaderMaterial_iy8jq")
[node name="DebugMob" type="Node3D"]
script = ExtResource("1_545xt")
@ -12,7 +63,7 @@ script = ExtResource("1_545xt")
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
mesh = SubResource("CapsuleMesh_k8gi4")
[node name="Label3D" type="Label3D" parent="."]
[node name="Label3D" type="Label3D" parent="MeshInstance3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2, 0)
billboard = 2
text = "SPOOKY!"

View File

@ -0,0 +1,554 @@
[gd_scene load_steps=60 format=4 uid="uid://tvirbm0kgvp8"]
[ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="1_fgk6j"]
[ext_resource type="PackedScene" uid="uid://ehf5sg3ahvbf" path="res://src/world/grunk_beast/grunk_beast.tscn" id="2_1lom2"]
[ext_resource type="ArrayMesh" uid="uid://cqd0a7ousx01n" path="res://assets/level/hallway/hallway_1.mesh" id="3_gyhlh"]
[ext_resource type="PackedScene" uid="uid://c2omlx4ptrc01" path="res://src/world/gunk_body/gunk_body.tscn" id="4_jj0u7"]
[ext_resource type="PackedScene" uid="uid://cppd3scvxf3eg" path="res://src/props/crate_long/crate_long.tscn" id="5_18csx"]
[ext_resource type="Texture2D" uid="uid://clofvb76pv6g" path="res://assets/red.png" id="5_jj0u7"]
[ext_resource type="Texture2D" uid="uid://cd0w8eqpount3" path="res://assets/props/crate_long/crate_long_C.png" id="6_e2fuu"]
[ext_resource type="Texture2D" uid="uid://da5p04vbiy3xe" path="res://assets/props/crate_long/crate_long_M.png" id="7_hv7qb"]
[ext_resource type="Texture2D" uid="uid://bsovubygl3go2" path="res://assets/props/crate_long/crate_long_N.png" id="8_wxmii"]
[ext_resource type="Texture2D" uid="uid://b1m1my5q2vlwi" path="res://assets/props/crate_long/crate_long_R.png" id="9_nsdlh"]
[ext_resource type="PackedScene" uid="uid://30o8ltnnxpxo" path="res://src/effects/floating_dust.tscn" id="10_br5h1"]
[ext_resource type="PackedScene" uid="uid://b6eg8t04rkh0c" path="res://src/props/wall_switch/wall_switch.tscn" id="11_qluxd"]
[ext_resource type="PackedScene" uid="uid://d2feet02a603e" path="res://src/props/overhead_light/overhead_light.tscn" id="12_h6xp0"]
[ext_resource type="Material" uid="uid://dmolqtdktqdsl" path="res://levels/ghost_ship/guide_sign/airlock_sign.material" id="13_irt7r"]
[ext_resource type="Material" uid="uid://dutkfm4ek0ysh" path="res://assets/materials/gunk_bright.material" id="14_olej6"]
[ext_resource type="ArrayMesh" uid="uid://bm0ryb1t7ha7e" path="res://assets/level/t-junction/t-junction_1.mesh" id="15_tmnt4"]
[ext_resource type="Material" uid="uid://c1vy4bkwb1g5m" path="res://assets/materials/gunk_lowrez.material" id="16_x0tbd"]
[ext_resource type="PackedScene" uid="uid://2yqi5u5eo025" path="res://src/world/gunk_node/grunk_nodule.tscn" id="17_iwy8m"]
[ext_resource type="PackedScene" uid="uid://rykf34p8n8x6" path="res://src/props/overhead_light/burnout_light.tscn" id="18_40pb5"]
[ext_resource type="PackedScene" uid="uid://cjqayfrj2oxyr" path="res://src/props/tarp_crate/tarp_crate_logo.tscn" id="19_iuevq"]
[ext_resource type="ArrayMesh" uid="uid://5jt7xxr05lw3" path="res://assets/level/hallway/hallway_2.mesh" id="20_pfbho"]
[ext_resource type="ArrayMesh" uid="uid://b3f5p4o7qr1mf" path="res://assets/level/t-junction/t-junction_2.mesh" id="21_e5vs1"]
[ext_resource type="Script" uid="uid://cisuvlqvqfqgo" path="res://src/world/meet_spook/meet_spook_spawner.gd" id="22_tnoo6"]
[ext_resource type="ArrayMesh" uid="uid://xn5nceqby4wd" path="res://assets/level/wall/wall_3.mesh" id="23_7rrnb"]
[ext_resource type="ArrayMesh" uid="uid://c4klxlj1oop7t" path="res://assets/level/hallway/hallway_4.mesh" id="24_x0es6"]
[ext_resource type="Material" uid="uid://b8xdnogrfefvf" path="res://levels/ghost_ship/guide_sign/mess_hall_sign.material" id="25_jvcry"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_1lom2"]
[sub_resource type="Sky" id="Sky_pka60"]
sky_material = SubResource("ProceduralSkyMaterial_1lom2")
[sub_resource type="Environment" id="Environment_pwykw"]
background_mode = 2
sky = SubResource("Sky_pka60")
[sub_resource type="NavigationMesh" id="NavigationMesh_gyhlh"]
vertices = PackedVector3Array(-26.25, 0.519, -29.25, -26.5, 0.519, -30.75, -27.5, 0.519, -30.75, -27.5, 0.519, -17.25, -26.75, 0.519, -18.25, -26.25, 0.519, -19, -0.25, 0.519, -17.5, 0.75, 0.519, -18, 0.75, 0.519, -19.75, -0.75, 0.519, -19, -1.25, 0.519, -18.5, -1, 0.519, -17.25, -3.25, 0.519, -24.25, -3.25, 0.519, -20.25, -1.25, 0.519, -20.25, 1.75, 0.519, -20.25, 1.75, 0.519, -24.25, -25.75, 0.519, -18.5, -25.25, 0.519, -18.25, -19.75, 0.519, -17.5, -24.75, 0.519, -17.25, -18, 0.519, -17.5, -0.5, 0.519, -16.75, -20.25, 0.519, -18.5, -0.5, 0.519, -6, 0.75, 0.519, -6, 0.75, 0.519, -12.75, 0, 0.519, -13.25, -17, 0.519, -18.5, -24.25, 0.519, -24.25, -24.25, 0.519, -20.25, 2.5, 0.519, -19.75, 24.25, 0.519, -24.25, 2.5, 0.519, -5.75, 24.25, 0.519, -5.5, -2.25, 0.519, -4.25, -2.25, 0.519, -15.5, -24.25, 0.519, -15.5, -1.5, 0.519, -3.75, -24.25, 0.519, 24.25, -1.5, 0.519, 24.25, 0.75, 0.519, -4.25, -0.5, 0.519, -4.25, 1.75, 0.519, -3.75, 1.75, 0.519, 24.25, 2.5, 0.519, -4.25, 24.25, 0.519, 24.25)
polygons = [PackedInt32Array(4, 3, 5), PackedInt32Array(5, 3, 0), PackedInt32Array(0, 3, 1), PackedInt32Array(1, 3, 2), PackedInt32Array(11, 10, 6), PackedInt32Array(6, 10, 9), PackedInt32Array(6, 9, 7), PackedInt32Array(7, 9, 8), PackedInt32Array(14, 13, 12), PackedInt32Array(8, 14, 15), PackedInt32Array(15, 14, 16), PackedInt32Array(16, 14, 12), PackedInt32Array(18, 4, 17), PackedInt32Array(20, 18, 19), PackedInt32Array(8, 9, 14), PackedInt32Array(19, 21, 20), PackedInt32Array(20, 21, 11), PackedInt32Array(6, 22, 11), PackedInt32Array(17, 23, 18), PackedInt32Array(18, 23, 19), PackedInt32Array(25, 24, 26), PackedInt32Array(26, 24, 27), PackedInt32Array(10, 11, 28), PackedInt32Array(28, 11, 21), PackedInt32Array(6, 27, 22), PackedInt32Array(22, 27, 24), PackedInt32Array(17, 4, 5), PackedInt32Array(30, 29, 13), PackedInt32Array(13, 29, 12), PackedInt32Array(15, 16, 31), PackedInt32Array(31, 16, 32), PackedInt32Array(33, 31, 34), PackedInt32Array(34, 31, 32), PackedInt32Array(37, 36, 35), PackedInt32Array(35, 38, 37), PackedInt32Array(37, 38, 40), PackedInt32Array(37, 40, 39), PackedInt32Array(42, 24, 41), PackedInt32Array(41, 24, 25), PackedInt32Array(41, 43, 42), PackedInt32Array(42, 43, 38), PackedInt32Array(38, 43, 44), PackedInt32Array(38, 44, 40), PackedInt32Array(45, 33, 34), PackedInt32Array(45, 34, 43), PackedInt32Array(43, 34, 44), PackedInt32Array(44, 34, 46)]
geometry_parsed_geometry_type = 1
geometry_collision_mask = 4278190081
agent_height = 2.0
[sub_resource type="PlaneMesh" id="PlaneMesh_nwuu1"]
size = Vector2(50, 50)
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_gyhlh"]
data = PackedVector3Array(25, 0, 25, -25, 0, 25, 25, 0, -25, -25, 0, 25, -25, 0, -25, 25, 0, -25)
[sub_resource type="WorldBoundaryShape3D" id="WorldBoundaryShape3D_m4lys"]
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_u8j4k"]
data = PackedVector3Array(-1.5, 0, -6, -1.5, 0, 6, -1.5, 3, -6, -1.5, 3, -6, -1.5, 0, 6, -1.5, 3, 6, 1.5, 0, 6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, 6, 1.5, 0, -6, 1.5, 3, -6, -1.5, 0, 6, -1.5, 0, -6, 1.5, 0, 6, 1.5, 0, 6, -1.5, 0, -6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, -6, -1.5, 3, 6, -1.5, 3, 6, 1.5, 3, -6, -1.5, 3, -6)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_62grt"]
resource_local_to_scene = true
albedo_texture = ExtResource("6_e2fuu")
metallic = 1.0
metallic_texture = ExtResource("7_hv7qb")
roughness_texture = ExtResource("9_nsdlh")
normal_enabled = true
normal_texture = ExtResource("8_wxmii")
ao_enabled = true
texture_filter = 2
[sub_resource type="ArrayMesh" id="ArrayMesh_isly2"]
_surfaces = [{
"aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5),
"format": 34896613377,
"index_count": 84,
"index_data": PackedByteArray("CgAGAAIAAgAEAAoABAAGAAoACwAEAAIADAAGAAQABAAIAAwACwAIAAQADAAIAAYAAgABAAsAAQAIAAsADQABAAIAAgAGAA0ABwABAA0ADQAGAAcACQABAAcACQAIAAEABwAGAA4ACQAHAAUABQAHAA4ABQAIAAkABgAIAA8AAwAIAAUADgAGAAAAAAAGAA8ADgAAAAUADwAIAAAABQAAAAMAAAAIAAMA"),
"lods": [0.108952, PackedByteArray("AgAGAAcABAAGAAIAAgABAAQABwABAAIABAAIAAYAAQAIAAQACQABAAcACQAIAAEACQAHAAUABQAIAAkABwAGAAAABwAAAAUABgAIAAAAAwAIAAUAAAAIAAMABQAAAAMA"), 0.261829, PackedByteArray("AAABAAIAAgABAAQAAQAAAAUABAADAAIAAQADAAQAAgADAAAABQADAAEABQAAAAMA"), 0.524037, PackedByteArray("AAABAAIAAgABAAMAAQAAAAMAAgADAAAA")],
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 16,
"vertex_data": PackedByteArray("AAAyM///AADc3f//AAAAAP//zMz//wAAAAAyMwAAAAD//zIzAAAAAAAAzMwAAAAA3N0AAP//AAAhIv////8AACEiAAAAAAAAISL//wAAAAD//zIz//8AAP//zMwAAAAA3N0AAAAAAADc3f////8AAAAAzMz//wAAISIAAP//AAA=")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_dxel0"]
resource_local_to_scene = true
_surfaces = [{
"aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5),
"attribute_data": PackedByteArray("/7//P/9v/7//X/8//7//vwAA/78AAP8//6f/v/9H/7//p/+//7//v/+f//f/v////6cAAP/H/wf/n/83/7//P/+X/7//l/8//zf/P/8P/7//x//H/5//x/+/AAD/n/8H/6f/P//H/zf/X/+//0f/P/9v/z//p/8//6f////H//f/D/8//5f/v/+X/z//p/+//6f/P/83/7//R/+//0f/P/9v/z//b/+//1//P/9f/7//N/+//w//v/83/z//D/8/"),
"format": 34896613399,
"index_count": 84,
"index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"),
"lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")],
"material": SubResource("StandardMaterial3D_62grt"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 48,
"vertex_data": PackedByteArray("AAAyM///VNXc3f//AAD/////zMz//1TVAAAyMwAAVNUAADIzAAD8xQAAMjP///zFAADMzAAAVNX//zIzAABU1QAAzMwAAP//AAAyMwAA///c3f//AAD/////MjMAAP/////MzP///7/c3QAA///svyEi/////0TBAAAyM///Fr8hIv//AAD//yEi////////3N0AAP///MUhIgAAAAD8xSEiAAAAAP//ISL//wAA/////zIz////v9zd//////+/AADMzP//DMEhIgAA//+cvP//zMwAAFTV//8yM///VNXc3f///////wAAzMz//1TV///MzAAA///c3QAAAAD//yEiAAD///zFISL//wAAqukhIv////+q6QAAzMwAAKrpAADMzP//qunc3QAAAAD8xf//MjMAAPzF//8yM////MXc3f////+q6dzd//8AAKrp///MzP//qun//8zMAACq6dzdAAAAAP+/ISIAAAAA/7/c3QAA////vyEiAAD///+/VFWqqv9//7+qKqoqVFWqqv45/pz+Of6cVFWqqqoqqir/P/+//z//v/7A/0C2QLbA/3//f/9//3//f/9//3//f/9//7//f/+//xwBRv45/pwOQA3A/z//v/9//3//f/9//3//f/9//3+qKqoqqiqqKv9//79UVaqq0sDSQKlCqML+Of6cCWoEtQlqBLUJagS1CWoEtf8cAUb/HAFG/xwBRgQ19hUENfYVBDX2FQQ19hUAAP9/AAD/fwAA/38AAP9/")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_isly2")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ncghj"]
resource_local_to_scene = true
albedo_texture = ExtResource("6_e2fuu")
metallic = 1.0
metallic_texture = ExtResource("7_hv7qb")
roughness_texture = ExtResource("9_nsdlh")
normal_enabled = true
normal_texture = ExtResource("8_wxmii")
ao_enabled = true
texture_filter = 2
[sub_resource type="ArrayMesh" id="ArrayMesh_kyigx"]
resource_local_to_scene = true
_surfaces = [{
"aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5),
"attribute_data": PackedByteArray("/7//P/9v/7//X/8//7//vwAA/78AAP8//6f/v/9H/7//p/+//7//v/+f//f/v////6cAAP/H/wf/n/83/7//P/+X/7//l/8//zf/P/8P/7//x//H/5//x/+/AAD/n/8H/6f/P//H/zf/X/+//0f/P/9v/z//p/8//6f////H//f/D/8//5f/v/+X/z//p/+//6f/P/83/7//R/+//0f/P/9v/z//b/+//1//P/9f/7//N/+//w//v/83/z//D/8/"),
"format": 34896613399,
"index_count": 84,
"index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"),
"lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")],
"material": SubResource("StandardMaterial3D_ncghj"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 48,
"vertex_data": PackedByteArray("AAAyM///VNXc3f//AAD/////zMz//1TVAAAyMwAAVNUAADIzAAD8xQAAMjP///zFAADMzAAAVNX//zIzAABU1QAAzMwAAP//AAAyMwAA///c3f//AAD/////MjMAAP/////MzP///7/c3QAA///svyEi/////0TBAAAyM///Fr8hIv//AAD//yEi////////3N0AAP///MUhIgAAAAD8xSEiAAAAAP//ISL//wAA/////zIz////v9zd//////+/AADMzP//DMEhIgAA//+cvP//zMwAAFTV//8yM///VNXc3f///////wAAzMz//1TV///MzAAA///c3QAAAAD//yEiAAD///zFISL//wAAqukhIv////+q6QAAzMwAAKrpAADMzP//qunc3QAAAAD8xf//MjMAAPzF//8yM////MXc3f////+q6dzd//8AAKrp///MzP//qun//8zMAACq6dzdAAAAAP+/ISIAAAAA/7/c3QAA////vyEiAAD///+/VFWqqv9//7+qKqoqVFWqqv45/pz+Of6cVFWqqqoqqir/P/+//z//v/7A/0C2QLbA/3//f/9//3//f/9//3//f/9//7//f/+//xwBRv45/pwOQA3A/z//v/9//3//f/9//3//f/9//3+qKqoqqiqqKv9//79UVaqq0sDSQKlCqML+Of6cCWoEtQlqBLUJagS1CWoEtf8cAUb/HAFG/xwBRgQ19hUENfYVBDX2FQQ19hUAAP9/AAD/fwAA/38AAP9/")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_isly2")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2qkxu"]
resource_local_to_scene = true
albedo_texture = ExtResource("6_e2fuu")
metallic = 1.0
metallic_texture = ExtResource("7_hv7qb")
roughness_texture = ExtResource("9_nsdlh")
normal_enabled = true
normal_texture = ExtResource("8_wxmii")
ao_enabled = true
texture_filter = 2
[sub_resource type="ArrayMesh" id="ArrayMesh_gtnad"]
resource_local_to_scene = true
_surfaces = [{
"aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5),
"attribute_data": PackedByteArray("/7//P/9v/7//X/8//7//vwAA/78AAP8//6f/v/9H/7//p/+//7//v/+f//f/v////6cAAP/H/wf/n/83/7//P/+X/7//l/8//zf/P/8P/7//x//H/5//x/+/AAD/n/8H/6f/P//H/zf/X/+//0f/P/9v/z//p/8//6f////H//f/D/8//5f/v/+X/z//p/+//6f/P/83/7//R/+//0f/P/9v/z//b/+//1//P/9f/7//N/+//w//v/83/z//D/8/"),
"format": 34896613399,
"index_count": 84,
"index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"),
"lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")],
"material": SubResource("StandardMaterial3D_2qkxu"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 48,
"vertex_data": PackedByteArray("AAAyM///VNXc3f//AAD/////zMz//1TVAAAyMwAAVNUAADIzAAD8xQAAMjP///zFAADMzAAAVNX//zIzAABU1QAAzMwAAP//AAAyMwAA///c3f//AAD/////MjMAAP/////MzP///7/c3QAA///svyEi/////0TBAAAyM///Fr8hIv//AAD//yEi////////3N0AAP///MUhIgAAAAD8xSEiAAAAAP//ISL//wAA/////zIz////v9zd//////+/AADMzP//DMEhIgAA//+cvP//zMwAAFTV//8yM///VNXc3f///////wAAzMz//1TV///MzAAA///c3QAAAAD//yEiAAD///zFISL//wAAqukhIv////+q6QAAzMwAAKrpAADMzP//qunc3QAAAAD8xf//MjMAAPzF//8yM////MXc3f////+q6dzd//8AAKrp///MzP//qun//8zMAACq6dzdAAAAAP+/ISIAAAAA/7/c3QAA////vyEiAAD///+/VFWqqv9//7+qKqoqVFWqqv45/pz+Of6cVFWqqqoqqir/P/+//z//v/7A/0C2QLbA/3//f/9//3//f/9//3//f/9//7//f/+//xwBRv45/pwOQA3A/z//v/9//3//f/9//3//f/9//3+qKqoqqiqqKv9//79UVaqq0sDSQKlCqML+Of6cCWoEtQlqBLUJagS1CWoEtf8cAUb/HAFG/xwBRgQ19hUENfYVBDX2FQQ19hUAAP9/AAD/fwAA/38AAP9/")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_isly2")
[sub_resource type="Curve" id="Curve_2ldv4"]
_limits = [0.0, 0.4, 0.0, 1.0]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.3, 0.4), 0.0, 0.0, 0, 0, Vector2(0.7, 0.4), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 4
[sub_resource type="CurveTexture" id="CurveTexture_ty63v"]
curve = SubResource("Curve_2ldv4")
[sub_resource type="Gradient" id="Gradient_sg1jh"]
offsets = PackedFloat32Array(0, 0.1, 0.4, 0.6, 1)
colors = PackedColorArray(0.15, 0.15, 0.15, 1, 0.355313, 0.355314, 0.355313, 1, 0.356863, 0.356863, 0.356863, 1, 0.647059, 0.647059, 0.647059, 1, 0.15, 0.15, 0.15, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_w3xaq"]
gradient = SubResource("Gradient_sg1jh")
[sub_resource type="Curve" id="Curve_iy2ht"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.746094, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 3
[sub_resource type="CurveTexture" id="CurveTexture_w3xaq"]
curve = SubResource("Curve_iy2ht")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_m3sro"]
emission_shape = 3
emission_box_extents = Vector3(1.5, 1.5, 6)
direction = Vector3(0, -1, 0)
spread = 100.0
initial_velocity_min = 0.05
initial_velocity_max = 0.15
gravity = Vector3(0, 0, 0)
scale_curve = SubResource("CurveTexture_w3xaq")
color_ramp = SubResource("GradientTexture1D_w3xaq")
alpha_curve = SubResource("CurveTexture_ty63v")
turbulence_enabled = true
turbulence_noise_strength = 0.1
turbulence_noise_scale = 0.3
turbulence_influence_min = 0.0
[sub_resource type="ArrayMesh" id="ArrayMesh_ojd88"]
_surfaces = [{
"aabb": AABB(-1, -0.4, -0.2, 2, 0.4, 0.4),
"format": 34896613377,
"index_count": 24,
"index_data": PackedByteArray("AAABAAIAAAADAAEAAgABAAQAAgAEAAAABAABAAMABQADAAAABAADAAUAAAAEAAUA"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 6,
"vertex_data": PackedByteArray("AAD/////AAAAAAAA/38AAAAA//8AAAAA//8AAP9/AAD/////AAAAAP///////wAA")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_5p5u5"]
_surfaces = [{
"aabb": AABB(-1, -0.4, -0.2, 2, 0.4, 0.4),
"attribute_data": PackedByteArray("AAD/I/8RAAD/I/8j/yP/I/9N/yP/I//b/03/2/8j/9v/Ef//AAD/2/93/9v/Tf/b/3f/I/9N/yP/I/8j/yP/2wAA/yMAAP/b"),
"format": 34896613399,
"index_count": 24,
"index_data": PackedByteArray("AAABAAIAAwAEAAUABQAEAAYABwAIAAkACgALAAwADAALAA0ADgAPABAAEAAPABEA"),
"material": ExtResource("13_irt7r"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 18,
"vertex_data": PackedByteArray("AAD///////8AAAAA/3///wAA//8AAP//AAD//wAAsvIAAAAA/3+y8v////8AALLy//8AAP9/svL/////AAD/v///AAD/f/+//////////7////////8mwv//AAD/fybCAAD/////JsIAAAAA/38mwgAA//8AAFTV/////wAAVNUAAP////9U1f///////1TV/z//f/8//3//P/9/PjnAxj45wMY+OcDGPjnAxv9/AAD/fwAA/38AAIYUeOuGFHjrhhR464YUeOtU1aoqVNWqKlTVqipU1aoq")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_ojd88")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_ejg8u"]
data = PackedVector3Array(-1, 0, 0.2, -1, -0.4, 0, -1, 0, -0.2, -1, 0, -0.2, -1, -0.4, 0, 1, 0, -0.2, 1, 0, -0.2, -1, -0.4, 0, 1, -0.4, 0, 1, 0, -0.2, 1, -0.4, 0, 1, 0, 0.2, 1, 0, 0.2, 1, -0.4, 0, -1, 0, 0.2, -1, 0, 0.2, 1, -0.4, 0, -1, -0.4, 0, -1, 0, -0.2, 1, 0, -0.2, -1, 0, 0.2, -1, 0, 0.2, 1, 0, -0.2, 1, 0, 0.2)
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_o1heh"]
data = PackedVector3Array(-1.5, 0, -1.5, -1.5, 0, 1.5, -1.5, 3, -1.5, -1.5, 3, -1.5, -1.5, 0, 1.5, -1.5, 3, 1.5, -1.5, 0, 1.5, -1.5, 0, -1.5, 1.5, 0, 1.5, 1.5, 0, 1.5, -1.5, 0, -1.5, 1.5, 0, -1.5, 1.5, 3, 1.5, 1.5, 3, -1.5, -1.5, 3, 1.5, -1.5, 3, 1.5, 1.5, 3, -1.5, -1.5, 3, -1.5)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nmnkj"]
resource_local_to_scene = true
albedo_texture = ExtResource("6_e2fuu")
metallic = 1.0
metallic_texture = ExtResource("7_hv7qb")
roughness_texture = ExtResource("9_nsdlh")
normal_enabled = true
normal_texture = ExtResource("8_wxmii")
ao_enabled = true
texture_filter = 2
[sub_resource type="ArrayMesh" id="ArrayMesh_u2hqf"]
_surfaces = [{
"aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5),
"format": 34896613377,
"index_count": 84,
"index_data": PackedByteArray("CgAGAAIAAgAEAAoABAAGAAoACwAEAAIADAAGAAQABAAIAAwACwAIAAQADAAIAAYAAgABAAsAAQAIAAsADQABAAIAAgAGAA0ABwABAA0ADQAGAAcACQABAAcACQAIAAEABwAGAA4ACQAHAAUABQAHAA4ABQAIAAkABgAIAA8AAwAIAAUADgAGAAAAAAAGAA8ADgAAAAUADwAIAAAABQAAAAMAAAAIAAMA"),
"lods": [0.108952, PackedByteArray("AgAGAAcABAAGAAIAAgABAAQABwABAAIABAAIAAYAAQAIAAQACQABAAcACQAIAAEACQAHAAUABQAIAAkABwAGAAAABwAAAAUABgAIAAAAAwAIAAUAAAAIAAMABQAAAAMA"), 0.261829, PackedByteArray("AAABAAIAAgABAAQAAQAAAAUABAADAAIAAQADAAQAAgADAAAABQADAAEABQAAAAMA"), 0.524037, PackedByteArray("AAABAAIAAgABAAMAAQAAAAMAAgADAAAA")],
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 16,
"vertex_data": PackedByteArray("AAAyM///AADc3f//AAAAAP//zMz//wAAAAAyMwAAAAD//zIzAAAAAAAAzMwAAAAA3N0AAP//AAAhIv////8AACEiAAAAAAAAISL//wAAAAD//zIz//8AAP//zMwAAAAA3N0AAAAAAADc3f////8AAAAAzMz//wAAISIAAP//AAA=")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_8d2rn"]
resource_local_to_scene = true
_surfaces = [{
"aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5),
"attribute_data": PackedByteArray("/7//P/9v/7//X/8//7//vwAA/78AAP8//6f/v/9H/7//p/+//7//v/+f//f/v////6cAAP/H/wf/n/83/7//P/+X/7//l/8//zf/P/8P/7//x//H/5//x/+/AAD/n/8H/6f/P//H/zf/X/+//0f/P/9v/z//p/8//6f////H//f/D/8//5f/v/+X/z//p/+//6f/P/83/7//R/+//0f/P/9v/z//b/+//1//P/9f/7//N/+//w//v/83/z//D/8/"),
"format": 34896613399,
"index_count": 84,
"index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"),
"lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")],
"material": SubResource("StandardMaterial3D_nmnkj"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 48,
"vertex_data": PackedByteArray("AAAyM///VNXc3f//AAD/////zMz//1TVAAAyMwAAVNUAADIzAAD8xQAAMjP///zFAADMzAAAVNX//zIzAABU1QAAzMwAAP//AAAyMwAA///c3f//AAD/////MjMAAP/////MzP///7/c3QAA///svyEi/////0TBAAAyM///Fr8hIv//AAD//yEi////////3N0AAP///MUhIgAAAAD8xSEiAAAAAP//ISL//wAA/////zIz////v9zd//////+/AADMzP//DMEhIgAA//+cvP//zMwAAFTV//8yM///VNXc3f///////wAAzMz//1TV///MzAAA///c3QAAAAD//yEiAAD///zFISL//wAAqukhIv////+q6QAAzMwAAKrpAADMzP//qunc3QAAAAD8xf//MjMAAPzF//8yM////MXc3f////+q6dzd//8AAKrp///MzP//qun//8zMAACq6dzdAAAAAP+/ISIAAAAA/7/c3QAA////vyEiAAD///+/VFWqqv9//7+qKqoqVFWqqv45/pz+Of6cVFWqqqoqqir/P/+//z//v/7A/0C2QLbA/3//f/9//3//f/9//3//f/9//7//f/+//xwBRv45/pwOQA3A/z//v/9//3//f/9//3//f/9//3+qKqoqqiqqKv9//79UVaqq0sDSQKlCqML+Of6cCWoEtQlqBLUJagS1CWoEtf8cAUb/HAFG/xwBRgQ19hUENfYVBDX2FQQ19hUAAP9/AAD/fwAA/38AAP9/")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_u2hqf")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_tx4qh"]
data = PackedVector3Array(1.5, 0, 1.5, -1.5, 0, 1.5, 1.5, 0, -1.5, 1.5, 0, -1.5, -1.5, 0, 1.5, -1.5, 0, -1.5)
[sub_resource type="ArrayMesh" id="ArrayMesh_h1nog"]
_surfaces = [{
"aabb": AABB(-0.7, -0.28, -0.14, 1.4, 0.28, 0.28),
"format": 34896613377,
"index_count": 24,
"index_data": PackedByteArray("AAABAAIAAAADAAEAAgABAAQAAgAEAAAABAABAAMABQADAAAABAADAAUAAAAEAAUA"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 6,
"vertex_data": PackedByteArray("AAD/////AAAAAAAA/38AAAAA//8AAAAA//8AAP9/AAD/////AAAAAP///////wAA")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_ahtx8"]
_surfaces = [{
"aabb": AABB(-0.7, -0.28, -0.14, 1.4, 0.28, 0.28),
"attribute_data": PackedByteArray("AAD/I/8RAAD/I/8j/yP/I/9N/yP/I//b/03/2/8j/9v/Ef//AAD/2/93/9v/Tf/b/3f/I/9N/yP/I/8j/yP/2wAA/yMAAP/b"),
"format": 34896613399,
"index_count": 24,
"index_data": PackedByteArray("AAABAAIAAwAEAAUABQAEAAYABwAIAAkACgALAAwADAALAA0ADgAPABAAEAAPABEA"),
"material": ExtResource("25_jvcry"),
"name": "Cube",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 18,
"vertex_data": PackedByteArray("AAD///////8AAAAA/3///wAA//8AAP//AAD//wAAsvIAAAAA/3+y8v////8AALLy//8AAP9/svL/////AAD/v///AAD/f/+//////////7////////8mwv//AAD/fybCAAD/////JsIAAAAA/38mwgAA//8AAFTV/////wAAVNUAAP////9U1f///////1TV/z//f/8//3//P/9/PjnAxj45wMY+OcDGPjnAxv9/AAD/fwAA/38AAIYUeOuGFHjrhhR464YUeOtU1aoqVNWqKlTVqipU1aoq")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_h1nog")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_spe8j"]
data = PackedVector3Array(-0.7, 0, 0.14, -0.7, -0.28, 0, -0.7, 0, -0.14, -0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, -0.28, 0, 0.7, -0.28, 0, 0.7, 0, -0.14, 0.7, -0.28, 0, 0.7, 0, 0.14, 0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, -0.28, 0, -0.7, -0.28, 0, -0.7, 0, -0.14, 0.7, 0, -0.14, -0.7, 0, 0.14, -0.7, 0, 0.14, 0.7, 0, -0.14, 0.7, 0, 0.14)
[node name="PathingTest" type="Node3D"]
[node name="Player" parent="." instance=ExtResource("1_fgk6j")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(0.866025, -0.156955, -0.474726, 0.5, 0.271854, 0.82225, 0, -0.949453, 0.31391, 0, 0, 0)
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_pwykw")
[node name="GrunkBeast" parent="." instance=ExtResource("2_1lom2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.7, 1.5, -24.3)
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
navigation_mesh = SubResource("NavigationMesh_gyhlh")
[node name="WorldFloor" type="StaticBody3D" parent="NavigationRegion3D" groups=["PlasticMaterial"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.001, 0)
[node name="MeshInstance3D" type="MeshInstance3D" parent="NavigationRegion3D/WorldFloor"]
mesh = SubResource("PlaneMesh_nwuu1")
skeleton = NodePath("../../..")
[node name="CollisionShape3D3" type="CollisionShape3D" parent="NavigationRegion3D/WorldFloor"]
shape = SubResource("ConcavePolygonShape3D_gyhlh")
[node name="CollisionShape3D" type="CollisionShape3D" parent="NavigationRegion3D/WorldFloor"]
shape = SubResource("WorldBoundaryShape3D_m4lys")
[node name="Corridor1" type="Node3D" parent="NavigationRegion3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -10.5)
[node name="Hallway1" type="MeshInstance3D" parent="NavigationRegion3D/Corridor1"]
mesh = ExtResource("3_gyhlh")
skeleton = NodePath("Hallway1")
[node name="Hallway1" parent="NavigationRegion3D/Corridor1/Hallway1" groups=["MetalMaterial"] instance=ExtResource("4_jj0u7")]
initial_mask = ExtResource("5_jj0u7")
[node name="CollisionShape3D" type="CollisionShape3D" parent="NavigationRegion3D/Corridor1/Hallway1/Hallway1"]
shape = SubResource("ConcavePolygonShape3D_u8j4k")
[node name="CrateLong" parent="NavigationRegion3D/Corridor1/Hallway1" instance=ExtResource("5_18csx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0.25, -5.9)
mesh = SubResource("ArrayMesh_dxel0")
skeleton = NodePath("../Hallway1")
[node name="CrateLong3" parent="NavigationRegion3D/Corridor1/Hallway1" instance=ExtResource("5_18csx")]
transform = Transform3D(0.258819, -0.965926, 0, 0.965926, 0.258819, 0, 0, 0, 1, 1.2, 0.426927, -3.9)
mesh = SubResource("ArrayMesh_kyigx")
skeleton = NodePath("../Hallway1")
[node name="CrateLong2" parent="NavigationRegion3D/Corridor1/Hallway1" instance=ExtResource("5_18csx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0.75, -5.9)
mesh = SubResource("ArrayMesh_gtnad")
skeleton = NodePath("../Hallway1")
[node name="FloatingDust" parent="NavigationRegion3D/Corridor1/Hallway1" instance=ExtResource("10_br5h1")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
visibility_aabb = AABB(-1.5, -1.5, -6, 3, 3, 12)
process_material = SubResource("ParticleProcessMaterial_m3sro")
[node name="SwitchA2" parent="NavigationRegion3D/Corridor1/Hallway1" instance=ExtResource("11_qluxd")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.4, 1.5, 4.5)
[node name="OverheadLight" parent="NavigationRegion3D/Corridor1/Hallway1" instance=ExtResource("12_h6xp0")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, -1.5)
[node name="AirlockSign" type="MeshInstance3D" parent="NavigationRegion3D/Corridor1/Hallway1"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 4.5)
mesh = SubResource("ArrayMesh_5p5u5")
[node name="GunkBody" parent="NavigationRegion3D/Corridor1/Hallway1/AirlockSign" instance=ExtResource("4_jj0u7")]
mask_dim = 32
initial_mask = ExtResource("5_jj0u7")
source_gunk_material = ExtResource("14_olej6")
[node name="CollisionShape3D" type="CollisionShape3D" parent="NavigationRegion3D/Corridor1/Hallway1/AirlockSign/GunkBody"]
shape = SubResource("ConcavePolygonShape3D_ejg8u")
[node name="T-Junction1" type="MeshInstance3D" parent="NavigationRegion3D/Corridor1"]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0, 0, -7.5)
mesh = ExtResource("15_tmnt4")
skeleton = NodePath("GunkBody")
[node name="GunkBody" parent="NavigationRegion3D/Corridor1/T-Junction1" groups=["MetalMaterial"] instance=ExtResource("4_jj0u7")]
mask_dim = 192
initial_mask = ExtResource("5_jj0u7")
source_gunk_material = ExtResource("16_x0tbd")
[node name="CollisionShape3D" type="CollisionShape3D" parent="NavigationRegion3D/Corridor1/T-Junction1/GunkBody"]
shape = SubResource("ConcavePolygonShape3D_o1heh")
[node name="Hallway2" type="MeshInstance3D" parent="NavigationRegion3D/Corridor1"]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -7.5, 0, -7.5)
mesh = ExtResource("3_gyhlh")
skeleton = NodePath("GunkBody")
[node name="GunkBody" parent="NavigationRegion3D/Corridor1/Hallway2" groups=["MetalMaterial"] instance=ExtResource("4_jj0u7")]
initial_mask = ExtResource("5_jj0u7")
[node name="CollisionShape3D" type="CollisionShape3D" parent="NavigationRegion3D/Corridor1/Hallway2/GunkBody"]
shape = SubResource("ConcavePolygonShape3D_u8j4k")
[node name="GrunkNodule" parent="NavigationRegion3D/Corridor1/Hallway2" instance=ExtResource("17_iwy8m")]
transform = Transform3D(0.866025, 0.5, 0, -0.5, 0.866025, 0, 0, 0, 1, -1.35, 0, -1.15)
chitter = true
value = 4000.0
[node name="GrunkNodule2" parent="NavigationRegion3D/Corridor1/Hallway2" instance=ExtResource("17_iwy8m")]
transform = Transform3D(0.519615, 0.3, 0, 2.98023e-08, 2.98023e-08, -0.6, -0.3, 0.519615, 0, -1.35, 0, 0.25)
chitter = true
[node name="GrunkNodule3" parent="NavigationRegion3D/Corridor1/Hallway2" instance=ExtResource("17_iwy8m")]
transform = Transform3D(0.129904, 0.375, -0.45, -0.439868, -0.241946, -0.328601, -0.386835, 0.401045, 0.222535, -1.35, 0.5, -0.25)
[node name="GrunkNodule4" parent="NavigationRegion3D/Corridor1/Hallway2" instance=ExtResource("17_iwy8m")]
transform = Transform3D(0.34641, 0.2, -8.74228e-09, 0, -1.74846e-08, -0.4, -0.2, 0.34641, -1.51421e-08, -1.5, 1.02511, -1.25)
value = 800.0
[node name="GrunkNodule6" parent="NavigationRegion3D/Corridor1/Hallway2" instance=ExtResource("17_iwy8m")]
transform = Transform3D(0.109602, 0.109602, 0.268468, 0.219203, -0.219203, 9.58262e-10, 0.189835, 0.189835, -0.155, -1.5, 1.52511, -2.25)
chitter = true
value = 800.0
[node name="GrunkNodule5" parent="NavigationRegion3D/Corridor1/Hallway2" instance=ExtResource("17_iwy8m")]
transform = Transform3D(0.0773296, 0.288598, 0.1725, 0.0446463, 0.166622, -0.298779, -0.333244, 0.0892925, -7.54021e-09, -1.5, 1.12511, -1.75)
chitter = true
value = 800.0
[node name="FloatingDust" parent="NavigationRegion3D/Corridor1/Hallway2" instance=ExtResource("10_br5h1")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
visibility_aabb = AABB(-1.5, -1.5, -6, 3, 3, 12)
process_material = SubResource("ParticleProcessMaterial_m3sro")
[node name="BurnoutLight" parent="NavigationRegion3D/Corridor1/Hallway2" instance=ExtResource("18_40pb5")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, -1.5)
[node name="TarpCrateLogo" parent="NavigationRegion3D/Corridor1/Hallway2" instance=ExtResource("19_iuevq")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0.8, -11.4)
skeleton = NodePath("")
[node name="Hallway3" type="MeshInstance3D" parent="NavigationRegion3D/Corridor1"]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -19.5, 0, -7.5)
mesh = ExtResource("20_pfbho")
skeleton = NodePath("GunkBody")
[node name="GunkBody" parent="NavigationRegion3D/Corridor1/Hallway3" groups=["MetalMaterial"] instance=ExtResource("4_jj0u7")]
initial_mask = ExtResource("5_jj0u7")
[node name="CollisionShape3D" type="CollisionShape3D" parent="NavigationRegion3D/Corridor1/Hallway3/GunkBody"]
shape = SubResource("ConcavePolygonShape3D_u8j4k")
[node name="FloatingDust" parent="NavigationRegion3D/Corridor1/Hallway3" instance=ExtResource("10_br5h1")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
visibility_aabb = AABB(-1.5, -1.5, -6, 3, 3, 12)
process_material = SubResource("ParticleProcessMaterial_m3sro")
[node name="OverheadLight" parent="NavigationRegion3D/Corridor1/Hallway3" instance=ExtResource("12_h6xp0")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, -1.5)
[node name="CrateLong" parent="NavigationRegion3D/Corridor1/Hallway3" instance=ExtResource("5_18csx")]
transform = Transform3D(-4.37114e-08, -0.965926, 0.258819, 1.77636e-15, 0.258819, 0.965926, -1, 4.2222e-08, -1.13133e-08, 1.06072, 0.789149, 6.6)
mesh = SubResource("ArrayMesh_8d2rn")
skeleton = NodePath("../..")
[node name="T-Junction2" type="MeshInstance3D" parent="NavigationRegion3D/Corridor1"]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -27, 0, -7.5)
mesh = ExtResource("21_e5vs1")
skeleton = NodePath("GunkBody")
[node name="GunkBody" parent="NavigationRegion3D/Corridor1/T-Junction2" groups=["MetalMaterial"] instance=ExtResource("4_jj0u7")]
mask_dim = 192
initial_mask = ExtResource("5_jj0u7")
source_gunk_material = ExtResource("16_x0tbd")
[node name="CollisionShape3D" type="CollisionShape3D" parent="NavigationRegion3D/Corridor1/T-Junction2/GunkBody"]
shape = SubResource("ConcavePolygonShape3D_o1heh")
[node name="MessHallMeetSpookSpawner" type="Marker3D" parent="NavigationRegion3D/Corridor1/T-Junction2"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
script = ExtResource("22_tnoo6")
[node name="Target" type="Marker3D" parent="NavigationRegion3D/Corridor1/T-Junction2/MessHallMeetSpookSpawner"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.90735e-06, 0, 21)
[node name="EndCap" type="MeshInstance3D" parent="NavigationRegion3D/Corridor1"]
transform = Transform3D(2.98023e-08, 1, 0, 4.37114e-08, -1.3027e-15, -1, -1, 2.98023e-08, -4.37114e-08, -28.5, 1.5, -7.5)
mesh = ExtResource("23_7rrnb")
skeleton = NodePath("GunkBody")
[node name="GunkBody" parent="NavigationRegion3D/Corridor1/EndCap" instance=ExtResource("4_jj0u7")]
mask_dim = 64
initial_mask = ExtResource("5_jj0u7")
source_gunk_material = ExtResource("16_x0tbd")
[node name="CollisionShape3D" type="CollisionShape3D" parent="NavigationRegion3D/Corridor1/EndCap/GunkBody"]
shape = SubResource("ConcavePolygonShape3D_tx4qh")
[node name="Hallway4" type="MeshInstance3D" parent="NavigationRegion3D/Corridor1"]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -27, 0, -15)
mesh = ExtResource("24_x0es6")
skeleton = NodePath("GunkBody")
[node name="GunkBody" parent="NavigationRegion3D/Corridor1/Hallway4" groups=["MetalMaterial"] instance=ExtResource("4_jj0u7")]
initial_mask = ExtResource("5_jj0u7")
[node name="CollisionShape3D" type="CollisionShape3D" parent="NavigationRegion3D/Corridor1/Hallway4/GunkBody"]
shape = SubResource("ConcavePolygonShape3D_u8j4k")
[node name="FloatingDust" parent="NavigationRegion3D/Corridor1/Hallway4" instance=ExtResource("10_br5h1")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
visibility_aabb = AABB(-1.5, -1.5, -6, 3, 3, 12)
process_material = SubResource("ParticleProcessMaterial_m3sro")
[node name="SwitchB1" parent="NavigationRegion3D/Corridor1/Hallway4" instance=ExtResource("11_qluxd")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.4, 1.5, 4.5)
[node name="OverheadLight" parent="NavigationRegion3D/Corridor1/Hallway4" instance=ExtResource("12_h6xp0")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 3, -1.5)
[node name="MessHallSign" type="MeshInstance3D" parent="NavigationRegion3D/Corridor1/Hallway4"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 4.5)
mesh = SubResource("ArrayMesh_ahtx8")
[node name="GunkBody" parent="NavigationRegion3D/Corridor1/Hallway4/MessHallSign" instance=ExtResource("4_jj0u7")]
mask_dim = 32
initial_mask = ExtResource("5_jj0u7")
source_gunk_material = ExtResource("14_olej6")
[node name="CollisionShape3D" type="CollisionShape3D" parent="NavigationRegion3D/Corridor1/Hallway4/MessHallSign/GunkBody"]
shape = SubResource("ConcavePolygonShape3D_spe8j")
[connection signal="activated" from="NavigationRegion3D/Corridor1/Hallway1/SwitchA2" to="NavigationRegion3D/Corridor1/Hallway1/SwitchA2" method="disable"]
[connection signal="activated" from="NavigationRegion3D/Corridor1/Hallway4/SwitchB1" to="NavigationRegion3D/Corridor1/Hallway4/SwitchB1" method="disable"]

View File

@ -194,6 +194,7 @@ locale/translations=PackedStringArray("res://assets/text/text.en.translation")
3d_physics/layer_3="Sprayable"
3d_physics/layer_4="Player"
3d_physics/layer_5="GameSounds"
3d_physics/layer_6="Player Physics"
[rendering]

View File

@ -432,6 +432,7 @@ radius = 3.0
[node name="Player" type="CharacterBody3D"]
collision_layer = 8
collision_mask = 33
script = ExtResource("1_npueo")
[node name="CameraPosition" type="Node3D" parent="."]

View File

@ -4,9 +4,11 @@ extends Node3D
@onready var dust_animation: AnimationPlayer = %DustAnimation
@onready var open_sfx: AudioStreamPlayer3D = %OpenSFX
@onready var bulkhead_game_sound_emitter: GameSoundEmitter = %BulkheadGameSoundEmitter
@onready var nav_link: NavigationLink3D = %NavLink
func open() -> void:
nav_link.enabled = true
animation.play("open")
dust_animation.play("spray")
open_sfx.play()
@ -16,3 +18,4 @@ func open() -> void:
func close() -> void:
# TODO bespoke close anim?
animation.play_backwards("open")
nav_link.enabled = false

View File

@ -44,6 +44,9 @@ shadow_mesh = SubResource("ArrayMesh_hx0vd")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_88qrs"]
data = PackedVector3Array(-1.5, 0, 0.225, -1.5, 3, -0.225, -1.5, 3, 0.225, -1.5, 0, 0.225, -1.5, 0, -0.225, -1.5, 3, -0.225, -1.3125, 0.375, -0.225, -1.5, 0, -0.225, -1.2188, 0.2812, -0.225, -1.5, 0, -0.225, -1.125, 0.1875, -0.225, -1.2188, 0.2812, -0.225, -1.5, 0, -0.225, 1.125, 0.1875, -0.225, -1.125, 0.1875, -0.225, -1.3125, 0.375, -0.225, -1.5, 3, -0.225, -1.5, 0, -0.225, 1.5, 0, -0.225, 1.125, 0.1875, -0.225, -1.5, 0, -0.225, -1.3125, 2.625, -0.225, -1.5, 3, -0.225, -1.3125, 0.375, -0.225, 1.5, 0, -0.225, 1.3125, 0.375, -0.225, 1.125, 0.1875, -0.225, -1.5, 3, -0.225, -1.3125, 2.625, -0.225, -1.125, 2.8125, -0.225, 1.3125, 0.375, -0.225, 1.5, 0, -0.225, 1.3125, 2.625, -0.225, -1.5, 3, -0.225, -1.125, 2.8125, -0.225, 1.5, 3, -0.225, 1.3125, 2.625, -0.225, 1.5, 0, -0.225, 1.5, 3, -0.225, 1.5, 3, -0.225, -1.125, 2.8125, -0.225, 1.125, 2.8125, -0.225, 1.3125, 2.625, -0.225, 1.5, 3, -0.225, 1.2187, 2.7187, -0.225, 1.5, 3, -0.225, 1.125, 2.8125, -0.225, 1.2187, 2.7187, -0.225, 1.5, 0, -0.225, 1.5, 3, 0.225, 1.5, 3, -0.225, 1.5, 0, -0.225, 1.5, 0, 0.225, 1.5, 3, 0.225, 1.3125, 0.375, 0.225, 1.5, 0, 0.225, 1.2187, 0.2812, 0.225, 1.5, 0, 0.225, 1.125, 0.1875, 0.225, 1.2187, 0.2812, 0.225, 1.5, 0, 0.225, -1.125, 0.1875, 0.225, 1.125, 0.1875, 0.225, 1.3125, 0.375, 0.225, 1.5, 3, 0.225, 1.5, 0, 0.225, -1.5, 0, 0.225, -1.125, 0.1875, 0.225, 1.5, 0, 0.225, 1.3125, 2.625, 0.225, 1.5, 3, 0.225, 1.3125, 0.375, 0.225, -1.5, 0, 0.225, -1.3125, 0.375, 0.225, -1.125, 0.1875, 0.225, 1.5, 3, 0.225, 1.3125, 2.625, 0.225, 1.125, 2.8125, 0.225, -1.3125, 0.375, 0.225, -1.5, 0, 0.225, -1.5, 3, 0.225, 1.5, 3, 0.225, 1.125, 2.8125, 0.225, -1.5, 3, 0.225, -1.3125, 0.375, 0.225, -1.5, 3, 0.225, -1.3125, 2.625, 0.225, -1.5, 3, 0.225, 1.125, 2.8125, 0.225, -1.125, 2.8125, 0.225, -1.3125, 2.625, 0.225, -1.5, 3, 0.225, -1.2188, 2.7187, 0.225, -1.5, 3, 0.225, -1.125, 2.8125, 0.225, -1.2188, 2.7187, 0.225, -1.5, 0, -0.225, 1.5, 0, 0.225, 1.5, 0, -0.225, -1.5, 0, -0.225, -1.5, 0, 0.225, 1.5, 0, 0.225, 1.5, 3, -0.225, -1.5, 3, 0.225, -1.5, 3, -0.225, 1.5, 3, -0.225, 1.5, 3, 0.225, -1.5, 3, 0.225, 1.3125, 2.625, 0.225, 1.3125, 0.375, -0.225, 1.3125, 2.625, -0.225, 1.3125, 2.625, 0.225, 1.3125, 0.375, 0.225, 1.3125, 0.375, -0.225, -1.125, 2.8125, -0.225, 1.125, 2.8125, 0.225, 1.125, 2.8125, -0.225, -1.125, 2.8125, -0.225, -1.125, 2.8125, 0.225, 1.125, 2.8125, 0.225, -1.3125, 0.375, 0.225, -1.3125, 2.625, -0.225, -1.3125, 0.375, -0.225, -1.3125, 0.375, 0.225, -1.3125, 2.625, 0.225, -1.3125, 2.625, -0.225, -1.3125, 0.375, 0.225, -1.125, 0.1875, -0.225, -1.125, 0.1875, 0.225, -1.125, 0.1875, -0.225, -1.3125, 0.375, 0.225, -1.2188, 0.2812, -0.225, -1.2188, 0.2812, -0.225, -1.3125, 0.375, 0.225, -1.3125, 0.375, -0.225, -1.3125, 2.625, 0.225, -1.125, 2.8125, -0.225, -1.3125, 2.625, -0.225, -1.125, 2.8125, -0.225, -1.3125, 2.625, 0.225, -1.2188, 2.7187, 0.225, -1.125, 2.8125, -0.225, -1.2188, 2.7187, 0.225, -1.125, 2.8125, 0.225, 1.2187, 0.2812, 0.225, 1.3125, 0.375, -0.225, 1.3125, 0.375, 0.225, 1.3125, 0.375, -0.225, 1.2187, 0.2812, 0.225, 1.125, 0.1875, 0.225, 1.3125, 0.375, -0.225, 1.125, 0.1875, 0.225, 1.125, 0.1875, -0.225, 1.125, 2.8125, 0.225, 1.2187, 2.7187, -0.225, 1.125, 2.8125, -0.225, 1.2187, 2.7187, -0.225, 1.125, 2.8125, 0.225, 1.3125, 2.625, 0.225, 1.2187, 2.7187, -0.225, 1.3125, 2.625, 0.225, 1.3125, 2.625, -0.225, 1.125, 0.1875, 0.225, -1.125, 0.1875, -0.225, 1.125, 0.1875, -0.225, 1.125, 0.1875, 0.225, -1.125, 0.1875, 0.225, -1.125, 0.1875, -0.225)
[sub_resource type="SphereShape3D" id="SphereShape3D_jo25b"]
radius = 4.0
[sub_resource type="ArrayMesh" id="ArrayMesh_4jho1"]
_surfaces = [{
"aabb": AABB(-1.40625, 0.09375, -0.14, 2.8125, 2.8125, 0.28),
@ -314,9 +317,6 @@ _data = {
&"spray": SubResource("Animation_88qrs")
}
[sub_resource type="SphereShape3D" id="SphereShape3D_jo25b"]
radius = 4.0
[node name="Bulkhead" instance=ExtResource("1_77udb")]
script = ExtResource("2_hknvo")
@ -329,6 +329,17 @@ collision_layer = 5
[node name="CollisionShape3D" type="CollisionShape3D" parent="Frame/StaticBody3D" index="0"]
shape = SubResource("ConcavePolygonShape3D_88qrs")
[node name="BulkheadGameSoundEmitter" type="Area3D" parent="Frame/StaticBody3D/CollisionShape3D" index="0"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
collision_layer = 0
collision_mask = 16
script = ExtResource("8_bso71")
metadata/_custom_type_script = "uid://c5o1d2shq2qig"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Frame/StaticBody3D/CollisionShape3D/BulkheadGameSoundEmitter" index="0"]
shape = SubResource("SphereShape3D_jo25b")
[node name="Door" parent="." index="1"]
mesh = SubResource("ArrayMesh_bso71")
@ -391,13 +402,9 @@ libraries = {
stream = ExtResource("7_4jho1")
volume_db = -24.0
[node name="BulkheadGameSoundEmitter" type="Area3D" parent="." index="6"]
[node name="NavLink" type="NavigationLink3D" parent="." index="6"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
collision_layer = 0
collision_mask = 16
script = ExtResource("8_bso71")
metadata/_custom_type_script = "uid://c5o1d2shq2qig"
[node name="CollisionShape3D" type="CollisionShape3D" parent="BulkheadGameSoundEmitter" index="0"]
shape = SubResource("SphereShape3D_jo25b")
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.45, 0)
enabled = false
start_position = Vector3(0, 0, -1.5)
end_position = Vector3(0, 0, 1.5)

View File

@ -1,53 +1,30 @@
class_name GrunkBeast extends Node3D
## The nefarious grunkbeest!
##
## Uses tank controls.
## Procedural animation adapted from https://github.com/CBerry22/Godot-4.0-Procedural-Animation
class_name GrunkBeast extends CharacterBody3D
## Grunk beast controller
@export var move_speed := 6.0
@export var turn_speed := 6.0
@export var ground_offset := -1.5
@export var base_speed := 1.0
@export_category("Step Parameters")
@export var step_height := 1.2
@export var step_time := 0.1
@export var step_distance := 1.0
@export var step_target_offset := 10.0
var _forward := 0.0
var _theta := 0.0
@onready var target_fl: BeastIKTarget = $Armature/TargetFL
@onready var target_fr: BeastIKTarget = $Armature/TargetFR
@onready var target_bl: BeastIKTarget = $Armature/TargetBL
@onready var target_br: BeastIKTarget = $Armature/TargetBR
func move(forward: float, theta: float) -> void:
_forward = forward
_theta = theta
func _process(delta: float) -> void:
# Reorient based on relative leg position
var p1 := Plane(target_bl.global_position, target_fl.global_position, target_fr.global_position)
var p2 := Plane(target_fr.global_position, target_br.global_position, target_bl.global_position)
var normal := (p1.normal + p2.normal).normalized()
var reoriented_basis := (
Basis(normal.cross(basis.z), normal, basis.x.cross(normal)).orthonormalized()
var gravity: Vector3 = (
ProjectSettings.get_setting("physics/3d/default_gravity")
* ProjectSettings.get_setting("physics/3d/default_gravity_vector")
)
basis = basis.slerp(reoriented_basis, move_speed * delta).orthonormalized()
# Reposition body to hang between legs
var centroid := (
(target_fl.position + target_fr.position + target_bl.position + target_br.position) / 4.0
)
var target_pos := centroid + basis.y * ground_offset
var distance := basis.tdoty(target_pos - position)
position = position.lerp(position + basis.y * distance, move_speed * delta)
@onready var nav_agent: NavigationAgent3D = %NavAgent
# Movement
translate(Vector3.BACK * _forward * move_speed * delta)
rotate_object_local(Vector3.UP, _theta * turn_speed * delta)
_forward = 0.0
_theta = 0.0
func _physics_process(delta: float) -> void:
var path_pos := nav_agent.get_next_path_position()
var relative_pos := path_pos - global_position
var motion := relative_pos.normalized() * base_speed * delta
velocity.x = motion.x
velocity.z = motion.z
if not is_on_floor():
velocity += gravity * delta
move_and_slide()
func track_player() -> void:
if Player.instance:
nav_agent.target_position = Player.instance.global_position

View File

@ -1 +1 @@
uid://dgy2ubsj1fotp
uid://gwwmqwixqqr5

View File

@ -1,16 +1,11 @@
[gd_scene load_steps=16 format=3 uid="uid://d2664rpg4losx"]
[gd_scene load_steps=12 format=3 uid="uid://ehf5sg3ahvbf"]
[ext_resource type="PackedScene" uid="uid://bi5mxt5s4aq1a" path="res://assets/npc/grunk_beast/grunk_beast.gltf" id="1_hoss2"]
[ext_resource type="Script" uid="uid://dkll8s6kwb41r" path="res://src/world/grunk_beast/start_ik.gd" id="2_qic24"]
[ext_resource type="Script" uid="uid://dgy2ubsj1fotp" path="res://src/world/grunk_beast/grunk_beast.gd" id="2_qqnhb"]
[ext_resource type="Script" uid="uid://gwwmqwixqqr5" path="res://src/world/grunk_beast/grunk_beast.gd" id="2_qqnhb"]
[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk.gdshader" id="4_0gxpq"]
[ext_resource type="Script" uid="uid://7is3sa00qejh" path="res://src/world/grunk_beast/ik_target.gd" id="4_3gbao"]
[ext_resource type="Script" uid="uid://bpyovjodpxjpb" path="res://src/world/grunk_beast/step_ray.gd" id="4_faau1"]
[ext_resource type="Script" uid="uid://c1gitpy7s78ev" path="res://src/world/grunk_beast/target_container.gd" id="5_wffas"]
[ext_resource type="Texture2D" uid="uid://cm1jrvx7ftx4c" path="res://assets/black.png" id="5_xuag8"]
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="6_mbqcc"]
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_2roq2"]
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_faau1"]
width = 256
height = 256
depth = 32
@ -18,7 +13,7 @@ seamless = true
seamless_blend_skirt = 0.5
noise = ExtResource("6_mbqcc")
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_fk1xc"]
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_3gbao"]
width = 256
height = 256
depth = 32
@ -29,13 +24,13 @@ noise = ExtResource("6_mbqcc")
[sub_resource type="FastNoiseLite" id="FastNoiseLite_7fplw"]
frequency = 0.0703
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_omayi"]
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_wffas"]
width = 32
height = 32
depth = 128
noise = SubResource("FastNoiseLite_7fplw")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_vvw1q"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_bhjqi"]
resource_local_to_scene = true
render_priority = 0
shader = ExtResource("4_0gxpq")
@ -46,153 +41,48 @@ shader_parameter/pixellation = 128.0
shader_parameter/time_pixellation = 30.0
shader_parameter/roughness = 0.15
shader_parameter/specular_contribution = 0.8
shader_parameter/emission_strength = 0.02
shader_parameter/uv_scale = Vector2(2, 2)
shader_parameter/time_scale = 0.2
shader_parameter/emission_strength = 0.1
shader_parameter/uv_scale = Vector2(4, 4)
shader_parameter/time_scale = 1.0
shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = ExtResource("5_xuag8")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/jitter_magnitude = 0.3
shader_parameter/jitter_time_scale = 0.6
shader_parameter/jitter_noise = SubResource("NoiseTexture3D_omayi")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_faau1")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_3gbao")
shader_parameter/jitter_magnitude = 0.6
shader_parameter/jitter_time_scale = 0.2
shader_parameter/jitter_noise = SubResource("NoiseTexture3D_wffas")
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ml8dd"]
resource_local_to_scene = true
render_priority = 0
shader = ExtResource("4_0gxpq")
shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
shader_parameter/emission_color = Color(0.25, 0.88, 1, 1)
shader_parameter/pixellation = 128.0
shader_parameter/time_pixellation = 30.0
shader_parameter/roughness = 0.15
shader_parameter/specular_contribution = 0.8
shader_parameter/emission_strength = 0.02
shader_parameter/uv_scale = Vector2(2, 2)
shader_parameter/time_scale = 0.2
shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = ExtResource("5_xuag8")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/jitter_magnitude = 0.1
shader_parameter/jitter_time_scale = 0.6
shader_parameter/jitter_noise = SubResource("NoiseTexture3D_omayi")
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="CapsuleMesh" id="CapsuleMesh_d4ex2"]
material = SubResource("ShaderMaterial_bhjqi")
radius = 0.45
radial_segments = 7
rings = 1
[node name="GrunkBeast" instance=ExtResource("1_hoss2")]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_faau1"]
radius = 0.45
[node name="GrunkBeast" type="CharacterBody3D"]
script = ExtResource("2_qqnhb")
base_speed = 60.0
[node name="Armature" parent="." index="0"]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0, 0)
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
mesh = SubResource("CapsuleMesh_d4ex2")
[node name="Skeleton3D" parent="Armature" index="0"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
[node name="Label3D" type="Label3D" parent="MeshInstance3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2, 0)
billboard = 2
no_depth_test = true
text = "SPOOKY!"
[node name="Body" parent="Armature/Skeleton3D" index="0"]
surface_material_override/0 = SubResource("ShaderMaterial_vvw1q")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("CapsuleShape3D_faau1")
[node name="Leg" parent="Armature/Skeleton3D" index="1"]
surface_material_override/0 = SubResource("ShaderMaterial_ml8dd")
[node name="NavAgent" type="NavigationAgent3D" parent="."]
unique_name_in_owner = true
[node name="FrontLeftLeg" type="SkeletonIK3D" parent="Armature/Skeleton3D" index="2"]
root_bone = &"Leg1.F.L"
tip_bone = &"IK_Leg.F.L"
use_magnet = true
magnet = Vector3(0, 10, 0)
target_node = NodePath("../../TargetFL")
script = ExtResource("2_qic24")
[node name="TrackingTimer" type="Timer" parent="."]
autostart = true
[node name="FrontRightLeg" type="SkeletonIK3D" parent="Armature/Skeleton3D" index="3"]
root_bone = &"Leg1.F.R"
tip_bone = &"IK_Leg.F.R"
use_magnet = true
magnet = Vector3(0, 10, 0)
target_node = NodePath("../../TargetFR")
script = ExtResource("2_qic24")
[node name="BackLeftLeg" type="SkeletonIK3D" parent="Armature/Skeleton3D" index="4"]
root_bone = &"Leg1.B.L"
tip_bone = &"IK_Leg.B.L"
use_magnet = true
magnet = Vector3(0, 10, 0)
target_node = NodePath("../../TargetBL")
script = ExtResource("2_qic24")
[node name="BackRightLeg" type="SkeletonIK3D" parent="Armature/Skeleton3D" index="5"]
root_bone = &"Leg1.B.R"
tip_bone = &"IK_Leg.B.R"
use_magnet = true
magnet = Vector3(0, 10, 0)
target_node = NodePath("../../TargetBR")
script = ExtResource("2_qic24")
[node name="TargetFL" type="Marker3D" parent="Armature" index="1" node_paths=PackedStringArray("step_target", "neighbor", "diagonal")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, 1.5)
top_level = true
script = ExtResource("4_3gbao")
step_target = NodePath("../../StepTargets/RayFL/StepFL")
neighbor = NodePath("../TargetFR")
diagonal = NodePath("../TargetBR")
[node name="TargetFR" type="Marker3D" parent="Armature" index="2" node_paths=PackedStringArray("step_target", "neighbor", "diagonal")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, 1.5)
top_level = true
script = ExtResource("4_3gbao")
step_target = NodePath("../../StepTargets/RayFR/StepFR")
neighbor = NodePath("../TargetFL")
diagonal = NodePath("../TargetBL")
[node name="TargetBL" type="Marker3D" parent="Armature" index="3" node_paths=PackedStringArray("step_target", "neighbor", "diagonal")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, -2)
top_level = true
script = ExtResource("4_3gbao")
step_target = NodePath("../../StepTargets/RayBL/StepBL")
neighbor = NodePath("../TargetBR")
diagonal = NodePath("../TargetFR")
[node name="TargetBR" type="Marker3D" parent="Armature" index="4" node_paths=PackedStringArray("step_target", "neighbor", "diagonal")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, -2)
top_level = true
script = ExtResource("4_3gbao")
step_target = NodePath("../../StepTargets/RayBR/StepBR")
neighbor = NodePath("../TargetBL")
diagonal = NodePath("../TargetFL")
[node name="StepTargets" type="Node3D" parent="." index="1"]
script = ExtResource("5_wffas")
[node name="RayFL" type="RayCast3D" parent="StepTargets" index="0"]
transform = Transform3D(0.996195, -0.0871557, 0, 0.0868241, 0.992404, 0.0871557, -0.00759612, -0.0868241, 0.996195, 1.5, 3.5, 1.5)
target_position = Vector3(0, -10, 0)
script = ExtResource("4_faau1")
[node name="StepFL" type="Marker3D" parent="StepTargets/RayFL" index="0"]
transform = Transform3D(0.996195, 0.0868241, -0.00759612, -0.0871557, 0.992404, -0.0868241, 9.31323e-10, 0.0871557, 0.996195, -0.303884, -3.47341, -0.305045)
[node name="RayFR" type="RayCast3D" parent="StepTargets" index="1"]
transform = Transform3D(0.996195, 0.0871557, 0, -0.0868241, 0.992404, 0.0871557, 0.00759612, -0.0868241, 0.996195, -1.5, 3.5, 1.5)
target_position = Vector3(0, -10, 0)
script = ExtResource("4_faau1")
[node name="StepFR" type="Marker3D" parent="StepTargets/RayFR" index="0"]
transform = Transform3D(0.996195, -0.0868241, 0.00759612, 0.0871557, 0.992404, -0.0868241, -9.31323e-10, 0.0871557, 0.996195, 0.303884, -3.47341, -0.305045)
[node name="RayBL" type="RayCast3D" parent="StepTargets" index="2"]
transform = Transform3D(0.996195, -0.0871557, 0, 0.0868241, 0.992404, -0.0871557, 0.00759612, 0.0868241, 0.996195, 2, 3.5, -2)
target_position = Vector3(0, -10, 0)
script = ExtResource("4_faau1")
[node name="StepBL" type="Marker3D" parent="StepTargets/RayBL" index="0"]
transform = Transform3D(0.996195, 0.0868241, 0.00759612, -0.0871557, 0.992404, 0.0868241, -9.31323e-10, -0.0871557, 0.996195, -0.303884, -3.47341, 0.305045)
[node name="RayBR" type="RayCast3D" parent="StepTargets" index="3"]
transform = Transform3D(0.996195, 0.0871557, 0, -0.0868241, 0.992404, -0.0871557, -0.00759612, 0.0868241, 0.996195, -2, 3.5, -2)
target_position = Vector3(0, -10, 0)
script = ExtResource("4_faau1")
[node name="StepBR" type="Marker3D" parent="StepTargets/RayBR" index="0"]
transform = Transform3D(0.996195, -0.0868241, -0.00759612, 0.0871557, 0.992404, 0.0868241, 1.39698e-09, -0.0871557, 0.996195, 0.303884, -3.47341, 0.305045)
[connection signal="timeout" from="TrackingTimer" to="." method="track_player"]

View File

@ -52,7 +52,8 @@ stream_2/stream = ExtResource("6_yg8lg")
stream_3/stream = ExtResource("7_4kci5")
[node name="GrunkNodule" type="StaticBody3D"]
collision_layer = 5
collision_layer = 36
collision_mask = 0
script = ExtResource("1_iyr82")
splatter_scene = ExtResource("2_m8r0a")
durability = 3.0

File diff suppressed because one or more lines are too long

View File

@ -130,7 +130,7 @@ _data = {
}
[node name="GunkHeart" type="StaticBody3D"]
collision_layer = 5
collision_layer = 36
collision_mask = 0
script = ExtResource("1_ftym0")
durability = 3.0

View File

@ -52,7 +52,7 @@ _data = {
}
[node name="Listener" type="StaticBody3D"]
collision_layer = 5
collision_layer = 36
collision_mask = 0
script = ExtResource("1_htscg")
splatter_scene = ExtResource("2_2ibh1")

View File

@ -110,7 +110,8 @@ _data = {
}
[node name="GunkRelay" type="StaticBody3D"]
collision_layer = 5
collision_layer = 36
collision_mask = 0
script = ExtResource("1_rdv5j")
editor_arrow_scene = ExtResource("2_nfkbq")
value = 800.0

View File

@ -45,7 +45,7 @@ shadow_mesh = SubResource("ArrayMesh_swi0f")
data = PackedVector3Array(0.7236, -0.4472, 0.5257, 0, -1, 0, -0.2764, -0.4472, 0.8506, 0, -1, 0, 0.7236, -0.4472, 0.5257, 0.7236, -0.4472, -0.5257, -0.2764, -0.4472, 0.8506, 0, -1, 0, -0.8944, -0.4472, 0, -0.8944, -0.4472, 0, 0, -1, 0, -0.2764, -0.4472, -0.8506, -0.2764, -0.4472, -0.8506, 0, -1, 0, 0.7236, -0.4472, -0.5257, 0.7236, -0.4472, -0.5257, 0.7236, -0.4472, 0.5257, 0.8944, 0.4472, 0, 0.7236, -0.4472, 0.5257, -0.2764, -0.4472, 0.8506, 0.2764, 0.4472, 0.8506, -0.2764, -0.4472, 0.8506, -0.8944, -0.4472, 0, -0.7236, 0.4472, 0.5257, -0.8944, -0.4472, 0, -0.2764, -0.4472, -0.8506, -0.7236, 0.4472, -0.5257, -0.2764, -0.4472, -0.8506, 0.7236, -0.4472, -0.5257, 0.2764, 0.4472, -0.8506, 0.8944, 0.4472, 0, 0.7236, -0.4472, 0.5257, 0.2764, 0.4472, 0.8506, 0.2764, 0.4472, 0.8506, -0.2764, -0.4472, 0.8506, -0.7236, 0.4472, 0.5257, -0.7236, 0.4472, 0.5257, -0.8944, -0.4472, 0, -0.7236, 0.4472, -0.5257, -0.7236, 0.4472, -0.5257, -0.2764, -0.4472, -0.8506, 0.2764, 0.4472, -0.8506, 0.2764, 0.4472, -0.8506, 0.7236, -0.4472, -0.5257, 0.8944, 0.4472, 0, 0.8944, 0.4472, 0, 0.2764, 0.4472, 0.8506, 0, 1, 0, 0.2764, 0.4472, 0.8506, -0.7236, 0.4472, 0.5257, 0, 1, 0, -0.7236, 0.4472, 0.5257, -0.7236, 0.4472, -0.5257, 0, 1, 0, -0.7236, 0.4472, -0.5257, 0.2764, 0.4472, -0.8506, 0, 1, 0, 0.2764, 0.4472, -0.8506, 0.8944, 0.4472, 0, 0, 1, 0)
[node name="GunkTrigger" type="StaticBody3D"]
collision_layer = 5
collision_layer = 36
collision_mask = 0
script = ExtResource("1_t1c4j")
durability = 3.0

View File

@ -3,8 +3,8 @@ class_name MeetSpookMob extends Node3D
enum State { WAITING, FREEZE, MOVING }
const RAY_MASK := 0b00000101
const BASE_SPEED := 6.0
const RAY_MASK := 0b00100101
const BASE_SPEED := 4.0
@export var source: MeetSpook
@export var target: Node3D

View File

@ -0,0 +1,53 @@
class_name ProceduralGrunkBeast extends Node3D
## The nefarious grunkbeest!
##
## Uses tank controls.
## Procedural animation adapted from https://github.com/CBerry22/Godot-4.0-Procedural-Animation
@export var move_speed := 6.0
@export var turn_speed := 6.0
@export var ground_offset := -1.5
@export_category("Step Parameters")
@export var step_height := 1.2
@export var step_time := 0.1
@export var step_distance := 1.0
@export var step_target_offset := 10.0
var _forward := 0.0
var _theta := 0.0
@onready var target_fl: BeastIKTarget = $Armature/TargetFL
@onready var target_fr: BeastIKTarget = $Armature/TargetFR
@onready var target_bl: BeastIKTarget = $Armature/TargetBL
@onready var target_br: BeastIKTarget = $Armature/TargetBR
func move(forward: float, theta: float) -> void:
_forward = forward
_theta = theta
func _process(delta: float) -> void:
# Reorient based on relative leg position
var p1 := Plane(target_bl.global_position, target_fl.global_position, target_fr.global_position)
var p2 := Plane(target_fr.global_position, target_br.global_position, target_bl.global_position)
var normal := (p1.normal + p2.normal).normalized()
var reoriented_basis := (
Basis(normal.cross(basis.z), normal, basis.x.cross(normal)).orthonormalized()
)
basis = basis.slerp(reoriented_basis, move_speed * delta).orthonormalized()
# Reposition body to hang between legs
var centroid := (
(target_fl.position + target_fr.position + target_bl.position + target_br.position) / 4.0
)
var target_pos := centroid + basis.y * ground_offset
var distance := basis.tdoty(target_pos - position)
position = position.lerp(position + basis.y * distance, move_speed * delta)
# Movement
translate(Vector3.BACK * _forward * move_speed * delta)
rotate_object_local(Vector3.UP, _theta * turn_speed * delta)
_forward = 0.0
_theta = 0.0

View File

@ -0,0 +1 @@
uid://dgy2ubsj1fotp

View File

@ -0,0 +1,198 @@
[gd_scene load_steps=16 format=3 uid="uid://d2664rpg4losx"]
[ext_resource type="PackedScene" uid="uid://bi5mxt5s4aq1a" path="res://assets/npc/grunk_beast/grunk_beast.gltf" id="1_hoss2"]
[ext_resource type="Script" uid="uid://dkll8s6kwb41r" path="res://src/world/procedural_grunk_beast/start_ik.gd" id="2_qic24"]
[ext_resource type="Script" uid="uid://dgy2ubsj1fotp" path="res://src/world/procedural_grunk_beast/procedural_grunk_beast.gd" id="2_qqnhb"]
[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk.gdshader" id="4_0gxpq"]
[ext_resource type="Script" uid="uid://7is3sa00qejh" path="res://src/world/procedural_grunk_beast/ik_target.gd" id="4_3gbao"]
[ext_resource type="Script" uid="uid://bpyovjodpxjpb" path="res://src/world/procedural_grunk_beast/step_ray.gd" id="4_faau1"]
[ext_resource type="Script" uid="uid://c1gitpy7s78ev" path="res://src/world/procedural_grunk_beast/target_container.gd" id="5_wffas"]
[ext_resource type="Texture2D" uid="uid://cm1jrvx7ftx4c" path="res://assets/black.png" id="5_xuag8"]
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="6_mbqcc"]
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_2roq2"]
width = 256
height = 256
depth = 32
seamless = true
seamless_blend_skirt = 0.5
noise = ExtResource("6_mbqcc")
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_fk1xc"]
width = 256
height = 256
depth = 32
seamless = true
seamless_blend_skirt = 0.5
noise = ExtResource("6_mbqcc")
[sub_resource type="FastNoiseLite" id="FastNoiseLite_7fplw"]
frequency = 0.0703
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_omayi"]
width = 32
height = 32
depth = 128
noise = SubResource("FastNoiseLite_7fplw")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_vvw1q"]
resource_local_to_scene = true
render_priority = 0
shader = ExtResource("4_0gxpq")
shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
shader_parameter/emission_color = Color(0.25, 0.88, 1, 1)
shader_parameter/pixellation = 128.0
shader_parameter/time_pixellation = 30.0
shader_parameter/roughness = 0.15
shader_parameter/specular_contribution = 0.8
shader_parameter/emission_strength = 0.02
shader_parameter/uv_scale = Vector2(2, 2)
shader_parameter/time_scale = 0.2
shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = ExtResource("5_xuag8")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/jitter_magnitude = 0.3
shader_parameter/jitter_time_scale = 0.6
shader_parameter/jitter_noise = SubResource("NoiseTexture3D_omayi")
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ml8dd"]
resource_local_to_scene = true
render_priority = 0
shader = ExtResource("4_0gxpq")
shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
shader_parameter/emission_color = Color(0.25, 0.88, 1, 1)
shader_parameter/pixellation = 128.0
shader_parameter/time_pixellation = 30.0
shader_parameter/roughness = 0.15
shader_parameter/specular_contribution = 0.8
shader_parameter/emission_strength = 0.02
shader_parameter/uv_scale = Vector2(2, 2)
shader_parameter/time_scale = 0.2
shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = ExtResource("5_xuag8")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
shader_parameter/jitter_magnitude = 0.1
shader_parameter/jitter_time_scale = 0.6
shader_parameter/jitter_noise = SubResource("NoiseTexture3D_omayi")
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[node name="GrunkBeast" instance=ExtResource("1_hoss2")]
script = ExtResource("2_qqnhb")
[node name="Armature" parent="." index="0"]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0, 0)
[node name="Skeleton3D" parent="Armature" index="0"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
[node name="Body" parent="Armature/Skeleton3D" index="0"]
surface_material_override/0 = SubResource("ShaderMaterial_vvw1q")
[node name="Leg" parent="Armature/Skeleton3D" index="1"]
surface_material_override/0 = SubResource("ShaderMaterial_ml8dd")
[node name="FrontLeftLeg" type="SkeletonIK3D" parent="Armature/Skeleton3D" index="2"]
root_bone = &"Leg1.F.L"
tip_bone = &"IK_Leg.F.L"
use_magnet = true
magnet = Vector3(0, 10, 0)
target_node = NodePath("../../TargetFL")
script = ExtResource("2_qic24")
[node name="FrontRightLeg" type="SkeletonIK3D" parent="Armature/Skeleton3D" index="3"]
root_bone = &"Leg1.F.R"
tip_bone = &"IK_Leg.F.R"
use_magnet = true
magnet = Vector3(0, 10, 0)
target_node = NodePath("../../TargetFR")
script = ExtResource("2_qic24")
[node name="BackLeftLeg" type="SkeletonIK3D" parent="Armature/Skeleton3D" index="4"]
root_bone = &"Leg1.B.L"
tip_bone = &"IK_Leg.B.L"
use_magnet = true
magnet = Vector3(0, 10, 0)
target_node = NodePath("../../TargetBL")
script = ExtResource("2_qic24")
[node name="BackRightLeg" type="SkeletonIK3D" parent="Armature/Skeleton3D" index="5"]
root_bone = &"Leg1.B.R"
tip_bone = &"IK_Leg.B.R"
use_magnet = true
magnet = Vector3(0, 10, 0)
target_node = NodePath("../../TargetBR")
script = ExtResource("2_qic24")
[node name="TargetFL" type="Marker3D" parent="Armature" index="1" node_paths=PackedStringArray("step_target", "neighbor", "diagonal")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, 1.5)
top_level = true
script = ExtResource("4_3gbao")
step_target = NodePath("../../StepTargets/RayFL/StepFL")
neighbor = NodePath("../TargetFR")
diagonal = NodePath("../TargetBR")
[node name="TargetFR" type="Marker3D" parent="Armature" index="2" node_paths=PackedStringArray("step_target", "neighbor", "diagonal")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 0, 1.5)
top_level = true
script = ExtResource("4_3gbao")
step_target = NodePath("../../StepTargets/RayFR/StepFR")
neighbor = NodePath("../TargetFL")
diagonal = NodePath("../TargetBL")
[node name="TargetBL" type="Marker3D" parent="Armature" index="3" node_paths=PackedStringArray("step_target", "neighbor", "diagonal")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, -2)
top_level = true
script = ExtResource("4_3gbao")
step_target = NodePath("../../StepTargets/RayBL/StepBL")
neighbor = NodePath("../TargetBR")
diagonal = NodePath("../TargetFR")
[node name="TargetBR" type="Marker3D" parent="Armature" index="4" node_paths=PackedStringArray("step_target", "neighbor", "diagonal")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, -2)
top_level = true
script = ExtResource("4_3gbao")
step_target = NodePath("../../StepTargets/RayBR/StepBR")
neighbor = NodePath("../TargetBL")
diagonal = NodePath("../TargetFL")
[node name="StepTargets" type="Node3D" parent="." index="1"]
script = ExtResource("5_wffas")
[node name="RayFL" type="RayCast3D" parent="StepTargets" index="0"]
transform = Transform3D(0.996195, -0.0871557, 0, 0.0868241, 0.992404, 0.0871557, -0.00759612, -0.0868241, 0.996195, 1.5, 3.5, 1.5)
target_position = Vector3(0, -10, 0)
script = ExtResource("4_faau1")
[node name="StepFL" type="Marker3D" parent="StepTargets/RayFL" index="0"]
transform = Transform3D(0.996195, 0.0868241, -0.00759612, -0.0871557, 0.992404, -0.0868241, 9.31323e-10, 0.0871557, 0.996195, -0.303884, -3.47341, -0.305045)
[node name="RayFR" type="RayCast3D" parent="StepTargets" index="1"]
transform = Transform3D(0.996195, 0.0871557, 0, -0.0868241, 0.992404, 0.0871557, 0.00759612, -0.0868241, 0.996195, -1.5, 3.5, 1.5)
target_position = Vector3(0, -10, 0)
script = ExtResource("4_faau1")
[node name="StepFR" type="Marker3D" parent="StepTargets/RayFR" index="0"]
transform = Transform3D(0.996195, -0.0868241, 0.00759612, 0.0871557, 0.992404, -0.0868241, -9.31323e-10, 0.0871557, 0.996195, 0.303884, -3.47341, -0.305045)
[node name="RayBL" type="RayCast3D" parent="StepTargets" index="2"]
transform = Transform3D(0.996195, -0.0871557, 0, 0.0868241, 0.992404, -0.0871557, 0.00759612, 0.0868241, 0.996195, 2, 3.5, -2)
target_position = Vector3(0, -10, 0)
script = ExtResource("4_faau1")
[node name="StepBL" type="Marker3D" parent="StepTargets/RayBL" index="0"]
transform = Transform3D(0.996195, 0.0868241, 0.00759612, -0.0871557, 0.992404, 0.0868241, -9.31323e-10, -0.0871557, 0.996195, -0.303884, -3.47341, 0.305045)
[node name="RayBR" type="RayCast3D" parent="StepTargets" index="3"]
transform = Transform3D(0.996195, 0.0871557, 0, -0.0868241, 0.992404, -0.0871557, -0.00759612, 0.0868241, 0.996195, -2, 3.5, -2)
target_position = Vector3(0, -10, 0)
script = ExtResource("4_faau1")
[node name="StepBR" type="Marker3D" parent="StepTargets/RayBR" index="0"]
transform = Transform3D(0.996195, -0.0868241, -0.00759612, 0.0871557, 0.992404, 0.0868241, 1.39698e-09, -0.0871557, 0.996195, 0.303884, -3.47341, 0.305045)