diff --git a/blends/giant.blend b/blends/giant.blend index 2907cae..2db30cd 100644 Binary files a/blends/giant.blend and b/blends/giant.blend differ diff --git a/godot/Holster.gd b/godot/Holster.gd deleted file mode 100644 index 0cc6711..0000000 --- a/godot/Holster.gd +++ /dev/null @@ -1,7 +0,0 @@ -extends Node3D - -func _ready(): - set_as_top_level(true) - -func _process(delta): - global_transform.origin = $"../grape_man".get_pickup_bone_location() diff --git a/godot/Level/Island.tscn b/godot/Level/Island.tscn index 38999c6..3adf28e 100644 --- a/godot/Level/Island.tscn +++ b/godot/Level/Island.tscn @@ -3,10 +3,10 @@ [ext_resource type="PackedScene" uid="uid://d2d4uv7o5gx5p" path="res://Level/World/screen_shader.tscn" id="1_huyen"] [ext_resource type="PackedScene" uid="uid://b35w4hlh4n1jt" path="res://Level/World/world_environment.tscn" id="2_lerrn"] [ext_resource type="PackedScene" uid="uid://d3ccrfjpg4hbv" path="res://Models/palm_curved.tscn" id="3_bth2b"] -[ext_resource type="PackedScene" path="res://Models/palm_default.tscn" id="4_2cnue"] +[ext_resource type="PackedScene" uid="uid://c1n2lfcn4rkx7" path="res://Models/palm_default.tscn" id="4_2cnue"] [ext_resource type="PackedScene" uid="uid://ctbyl0qbks4k6" path="res://Models/ocean.tscn" id="4_dey2i"] [ext_resource type="PackedScene" uid="uid://difi2tur2j4dg" path="res://Models/island.tscn" id="4_lq6cy"] -[ext_resource type="PackedScene" path="res://Models/palm_young.tscn" id="5_prlw2"] +[ext_resource type="PackedScene" uid="uid://hg1yr5rnxd47" path="res://Models/palm_young.tscn" id="5_prlw2"] [ext_resource type="PackedScene" uid="uid://ce7jbp7f55cro" path="res://Models/buildings/building_1.tscn" id="8_6qbns"] [ext_resource type="PackedScene" uid="uid://cx44bjuxlhq06" path="res://Models/buildings/building_2.tscn" id="9_maqyx"] [ext_resource type="PackedScene" uid="uid://bm65tvb4irjqw" path="res://Models/buildings/building_3.tscn" id="10_j7nf7"] diff --git a/godot/Models/grape_animations/pickup.res b/godot/Models/grape_animations/pickup.res index 199e933..e98b629 100644 Binary files a/godot/Models/grape_animations/pickup.res and b/godot/Models/grape_animations/pickup.res differ diff --git a/godot/Models/grape_animations/upper_body_holding.res b/godot/Models/grape_animations/upper_body_holding.res index bc0655b..61761e3 100644 Binary files a/godot/Models/grape_animations/upper_body_holding.res and b/godot/Models/grape_animations/upper_body_holding.res differ diff --git a/godot/Models/grape_animations/upper_body_idle.res b/godot/Models/grape_animations/upper_body_idle.res.res similarity index 79% rename from godot/Models/grape_animations/upper_body_idle.res rename to godot/Models/grape_animations/upper_body_idle.res.res index e78638a..a023e5d 100644 Binary files a/godot/Models/grape_animations/upper_body_idle.res and b/godot/Models/grape_animations/upper_body_idle.res.res differ diff --git a/godot/Models/grape_man.gd b/godot/Models/grape_man.gd index f04b025..8195d33 100644 --- a/godot/Models/grape_man.gd +++ b/godot/Models/grape_man.gd @@ -1,7 +1,6 @@ extends Node3D @onready var animation: AnimationNodeStateMachinePlayback = $AnimationTree.get("parameters/playback") -@onready var pickup_bone_idx = $rig/Skeleton3D.find_bone("PickupBone") signal anim_check_grab(position: Vector3) @@ -29,12 +28,8 @@ func idle_hold(): animation.travel("IdleHold") func animation_key_grab(): - emit_signal("anim_check_grab", get_pickup_bone_location()) - -func get_pickup_bone_location() -> Vector3: - var trans = $rig/Skeleton3D.global_transform * $rig/Skeleton3D.get_bone_global_pose(pickup_bone_idx) - return trans.origin - + emit_signal("anim_check_grab", $GrabPointLocation.global_transform) + func animation_key_pickup_completed(): pickup_animation_in_progress = false emit_signal("pickup_animation_finished") diff --git a/godot/Models/grape_man.glb b/godot/Models/grape_man.glb index 678075b..c21386a 100644 --- a/godot/Models/grape_man.glb +++ b/godot/Models/grape_man.glb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d288ac266d2e97f2cb3fa162a485f99878cb6c9b0dc218c674a7914b3295f549 -size 659024 +oid sha256:6c07b7b68ef5daf21301084c31b4e5cc47f06d9c67a10aa4038853fb36ca14cf +size 659020 diff --git a/godot/Models/grape_man.glb.import b/godot/Models/grape_man.glb.import index 8e4e417..d25c2b6 100644 --- a/godot/Models/grape_man.glb.import +++ b/godot/Models/grape_man.glb.import @@ -5430,7 +5430,7 @@ _subresources={ "UpperBodyIdle": { "save_to_file/enabled": true, "save_to_file/keep_custom_tracks": true, -"save_to_file/path": "res://Models/grape_animations/upper_body_idle.res", +"save_to_file/path": "res://Models/grape_animations/upper_body_idle.res.res", "settings/loop_mode": 0, "slice_1/end_frame": 0, "slice_1/loop_mode": 0, diff --git a/godot/Models/grape_man.tscn b/godot/Models/grape_man.tscn index f729ffc..62fc7c0 100644 --- a/godot/Models/grape_man.tscn +++ b/godot/Models/grape_man.tscn @@ -4,6 +4,7 @@ [ext_resource type="Script" path="res://Models/grape_man.gd" id="2_ksje8"] [sub_resource type="AnimationNodeAdd2" id="AnimationNodeAdd2_a0vxm"] +filter_enabled = true filters = ["rig/Skeleton3D:forearm.L", "rig/Skeleton3D:forearm.R", "rig/Skeleton3D:head", "rig/Skeleton3D:upper_arm.L", "rig/Skeleton3D:upper_arm.R"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_s8uqe"] @@ -13,7 +14,7 @@ animation = &"UpperBodyIdle" animation = &"Idle" [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_ojr1k"] -graph_offset = Vector2(-74, 44) +graph_offset = Vector2(-312, -69) nodes/Add2/node = SubResource("AnimationNodeAdd2_a0vxm") nodes/Add2/position = Vector2(160, 80) nodes/Animation/node = SubResource("AnimationNodeAnimation_4ft7i") @@ -23,6 +24,7 @@ nodes/Animation/position = Vector2(0, 80) node_connections = [&"output", 0, &"Add2", &"Add2", 0, &"Animation", &"Add2", 1, &"Animation 2"] [sub_resource type="AnimationNodeAdd2" id="AnimationNodeAdd2_4gk6k"] +filter_enabled = true filters = ["rig/Skeleton3D:forearm.L", "rig/Skeleton3D:forearm.R", "rig/Skeleton3D:head", "rig/Skeleton3D:upper_arm.L", "rig/Skeleton3D:upper_arm.R"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_alnh1"] @@ -46,6 +48,7 @@ node_connections = [&"output", 0, &"Add2", &"Add2", 0, &"Animation", &"Add2", 1, animation = &"Pickup" [sub_resource type="AnimationNodeAdd2" id="AnimationNodeAdd2_rd6bn"] +filter_enabled = true filters = ["rig/Skeleton3D:forearm.L", "rig/Skeleton3D:forearm.R", "rig/Skeleton3D:head", "rig/Skeleton3D:upper_arm.L", "rig/Skeleton3D:upper_arm.R"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_7s7tg"] @@ -55,7 +58,7 @@ animation = &"UpperBodyIdle" animation = &"Walk" [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_6rmmo"] -graph_offset = Vector2(-384.186, 6.2577) +graph_offset = Vector2(-358.186, -79.7423) nodes/Add2/node = SubResource("AnimationNodeAdd2_rd6bn") nodes/Add2/position = Vector2(140, 80) nodes/Animation/node = SubResource("AnimationNodeAnimation_ir63n") @@ -65,6 +68,7 @@ nodes/Animation/position = Vector2(-40, 60) node_connections = [&"output", 0, &"Add2", &"Add2", 0, &"Animation", &"Add2", 1, &"Animation 2"] [sub_resource type="AnimationNodeAdd2" id="AnimationNodeAdd2_sv87c"] +filter_enabled = true filters = ["rig/Skeleton3D:forearm.L", "rig/Skeleton3D:forearm.R", "rig/Skeleton3D:head", "rig/Skeleton3D:upper_arm.L", "rig/Skeleton3D:upper_arm.R"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_y7bu0"] @@ -143,7 +147,7 @@ states/WalkEmpty/position = Vector2(548, 208) states/WalkHold/node = SubResource("AnimationNodeBlendTree_kalnq") states/WalkHold/position = Vector2(351, 323) transitions = ["Start", "IdleEmpty", SubResource("AnimationNodeStateMachineTransition_8sw6d"), "IdleEmpty", "WalkHold", SubResource("AnimationNodeStateMachineTransition_71rn8"), "WalkHold", "IdleEmpty", SubResource("AnimationNodeStateMachineTransition_cp7lp"), "WalkEmpty", "IdleEmpty", SubResource("AnimationNodeStateMachineTransition_27n2r"), "IdleEmpty", "WalkEmpty", SubResource("AnimationNodeStateMachineTransition_v26jl"), "IdleHold", "WalkHold", SubResource("AnimationNodeStateMachineTransition_u0rau"), "IdleHold", "WalkEmpty", SubResource("AnimationNodeStateMachineTransition_1hqga"), "WalkEmpty", "IdleHold", SubResource("AnimationNodeStateMachineTransition_uekhs"), "WalkHold", "IdleHold", SubResource("AnimationNodeStateMachineTransition_652wi"), "IdleEmpty", "Pickup", SubResource("AnimationNodeStateMachineTransition_sdgve"), "Pickup", "IdleEmpty", SubResource("AnimationNodeStateMachineTransition_otprv"), "IdleEmpty", "IdleHold", SubResource("AnimationNodeStateMachineTransition_fbwhh"), "IdleHold", "IdleEmpty", SubResource("AnimationNodeStateMachineTransition_4rq7a"), "WalkHold", "WalkEmpty", SubResource("AnimationNodeStateMachineTransition_oange"), "WalkEmpty", "WalkHold", SubResource("AnimationNodeStateMachineTransition_et4tx"), "Pickup", "IdleHold", SubResource("AnimationNodeStateMachineTransition_y2dr5")] -graph_offset = Vector2(3, 172) +graph_offset = Vector2(26, 89) [node name="grape_man" instance=ExtResource("1_fh5yr")] transform = Transform3D(0.065, 0, 0, 0, 0.065, 0, 0, 0, 0.065, 0, 0, 0) @@ -163,10 +167,13 @@ bones/7/rotation = Quaternion(0.0142813, -6.34259e-18, -4.44044e-16, 0.999898) bones/10/rotation = Quaternion(0.105246, 0.0039338, -0.0113526, 0.994374) bones/15/rotation = Quaternion(0.105246, -0.0039338, 0.0113526, 0.994374) -[node name="OmniLight3D" type="OmniLight3D" parent="." index="2"] +[node name="GrabPointLocation" type="Node3D" parent="." index="2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.29365) + +[node name="OmniLight3D" type="OmniLight3D" parent="." index="3"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.289473, 8.26292, 4.26359) -[node name="AnimationTree" type="AnimationTree" parent="." index="3"] +[node name="AnimationTree" type="AnimationTree" parent="." index="4"] tree_root = SubResource("AnimationNodeStateMachine_6mfdu") anim_player = NodePath("../AnimationPlayer") active = true diff --git a/godot/Player.gd b/godot/Player.gd index 9ae064f..b7670f6 100644 --- a/godot/Player.gd +++ b/godot/Player.gd @@ -1,5 +1,6 @@ extends CharacterBody3D + const SPEED = 5.0 const JUMP_VELOCITY = 4.5 @export var horiz_sens = 0.25 @@ -16,7 +17,6 @@ func _ready(): $CameraMount.global_rotation.x = clampf($CameraMount.global_rotation.x, deg_to_rad(-60), deg_to_rad(-11)) - func _process(_delta): # Brings your mouse out of the window if you press escape. Add pause screen function here? if Input.is_action_pressed("ui_cancel"): @@ -26,7 +26,6 @@ func _process(_delta): func _input(event): # Handle the rotation of the camera using mouse movement. if event is InputEventMouseMotion: - # Side to side, first player object then player visuals. rotate_y(deg_to_rad(-event.relative.x * horiz_sens)) $CameraMount.rotate_x(deg_to_rad(-event.relative.y * vert_sens)) $grape_man.rotate_y(deg_to_rad(event.relative.x * horiz_sens)) diff --git a/godot/Sounds/SlimeParty.wav b/godot/Sounds/SlimeParty.wav new file mode 100644 index 0000000..bb8fa25 Binary files /dev/null and b/godot/Sounds/SlimeParty.wav differ diff --git a/godot/Sounds/SlimeParty.wav.import b/godot/Sounds/SlimeParty.wav.import new file mode 100644 index 0000000..2404e1d --- /dev/null +++ b/godot/Sounds/SlimeParty.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dg35jx6svmrj2" +path="res://.godot/imported/SlimeParty.wav-3a5ca824380a5317a9f053c836f3f093.sample" + +[deps] + +source_file="res://Sounds/SlimeParty.wav" +dest_files=["res://.godot/imported/SlimeParty.wav-3a5ca824380a5317a9f053c836f3f093.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/godot/Sounds/beachquiet.wav b/godot/Sounds/beachquiet.wav new file mode 100644 index 0000000..fbd8d8d Binary files /dev/null and b/godot/Sounds/beachquiet.wav differ diff --git a/godot/Sounds/beachquiet.wav.import b/godot/Sounds/beachquiet.wav.import new file mode 100644 index 0000000..8431a6b --- /dev/null +++ b/godot/Sounds/beachquiet.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://l02hcu1llpjk" +path="res://.godot/imported/beachquiet.wav-4d7b3f362a0eb18f5504682a02c34ea5.sample" + +[deps] + +source_file="res://Sounds/beachquiet.wav" +dest_files=["res://.godot/imported/beachquiet.wav-4d7b3f362a0eb18f5504682a02c34ea5.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/godot/Sounds/dropgrunt.ogg b/godot/Sounds/dropgrunt.ogg new file mode 100644 index 0000000..7e1eee8 --- /dev/null +++ b/godot/Sounds/dropgrunt.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37b68e9dff90811985aeaf4f7280a1cb38d84195a733e4f7c5d8588c248dc6c6 +size 19458 diff --git a/godot/Sounds/dropgrunt.ogg.import b/godot/Sounds/dropgrunt.ogg.import new file mode 100644 index 0000000..7a6fbda --- /dev/null +++ b/godot/Sounds/dropgrunt.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://csboqs15k3vps" +path="res://.godot/imported/dropgrunt.ogg-17874ed33d96ba69ea351610265a51dd.oggvorbisstr" + +[deps] + +source_file="res://Sounds/dropgrunt.ogg" +dest_files=["res://.godot/imported/dropgrunt.ogg-17874ed33d96ba69ea351610265a51dd.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/godot/Sounds/heartychuckle.ogg b/godot/Sounds/heartychuckle.ogg new file mode 100644 index 0000000..c71c074 --- /dev/null +++ b/godot/Sounds/heartychuckle.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14aef7dc99df57ddc18cfb036f556e54ffadb6c41c24cc2be9e249755c75d9eb +size 23905 diff --git a/godot/Sounds/heartychuckle.ogg.import b/godot/Sounds/heartychuckle.ogg.import new file mode 100644 index 0000000..d60b20f --- /dev/null +++ b/godot/Sounds/heartychuckle.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://b80t5xqckjoqk" +path="res://.godot/imported/heartychuckle.ogg-5d7553a58eca2ba7e4b363c99bfd92a4.oggvorbisstr" + +[deps] + +source_file="res://Sounds/heartychuckle.ogg" +dest_files=["res://.godot/imported/heartychuckle.ogg-5d7553a58eca2ba7e4b363c99bfd92a4.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/godot/Sounds/pickup_grunt.ogg b/godot/Sounds/pickup_grunt.ogg new file mode 100644 index 0000000..a6c8a12 --- /dev/null +++ b/godot/Sounds/pickup_grunt.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4d1515849ba224c51cb3c815ed963aeffa9c398ae421ef816a6b6461e8b9492 +size 31123 diff --git a/godot/Sounds/pickup_grunt.ogg.import b/godot/Sounds/pickup_grunt.ogg.import new file mode 100644 index 0000000..248c587 --- /dev/null +++ b/godot/Sounds/pickup_grunt.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://baocyd0p3jcku" +path="res://.godot/imported/pickup_grunt.ogg-b9b8b2eeb327248ea7dccb4c4bd8e12d.oggvorbisstr" + +[deps] + +source_file="res://Sounds/pickup_grunt.ogg" +dest_files=["res://.godot/imported/pickup_grunt.ogg-b9b8b2eeb327248ea7dccb4c4bd8e12d.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/godot/Villager.gd b/godot/Villager.gd index f279c20..91a9960 100644 --- a/godot/Villager.gd +++ b/godot/Villager.gd @@ -1,85 +1,55 @@ -extends CharacterBody3D +extends Node3D var rng = RandomNumberGenerator.new() -@export var target_location_xz = global_transform.origin * Vector3(1, 0, 1) -@export var location_xz = global_transform.origin * Vector3(1, 0, 1) -@export var target_direction_xz = (transform.basis * Vector3(1, 0, 1)).normalized() -@export var direction_xz = (transform.basis * Vector3(1, 0, 1)).normalized() -var task = "idle" +var spin_amount = 0 +var spinning = false +var wait_time = 0 -# Percentage chances of the character performing certain actions while idle. -@export var walk_chance = 0.1 -@export var spin_chance = 0.2 - -@export var walk_speed = 0.5 - -# Rate at which character corrects their direction after going off course (decimal percentage). -@export var spin_speed = 0.50 - -# Margin of accuracy to which the character will correct their direction when off course (radians). -@export var dir_accuracy = deg_to_rad(0.1) - -# Get the gravity from the project settings to be synced with RigidBody nodes. -var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") # Called when the node enters the scene tree for the first time. func _ready(): - pass + pass # Replace with function body. # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): - location_xz = global_transform.origin * Vector3(1, 0, 1) - direction_xz = (transform.basis * Vector3(1, 0, 1)).normalized() + var task = "idle" match task: "idle": - task = rng.randf_range(0, 100) + task = rng.randi_range(0, 100) - # Chance to walk somewhere. - if task <= walk_chance: + if task <= 33: task = "walk" - target_location_xz = global_transform.origin * Vector3(1, 0, 1) + (direction_xz * 16) - # Chance to rotate. - elif task > walk_chance and task <= (walk_chance + spin_chance): + elif task > 33 and task <= 50: task = "spin" - var rotation_angle = rng.randf_range(-2*PI, 2*PI) - var rotation_vector = Vector3(cos(rotation_angle), 0, sin(rotation_angle)) - target_direction_xz = direction_xz + rotation_vector - # Chance to idle. - elif task > (spin_chance + walk_chance): - task = "idle" + elif task > 50: + task = "wait" "walk": - # Get the direction to the target in z-x plane. - target_direction_xz = (location_xz.direction_to(target_location_xz) * Vector3(1, 0, 1)).normalized() - - # Continue to correct direction to within a margin of dir_accuracy degrees. - if direction_xz.angle_to(target_direction_xz) >= dir_accuracy: - # Rotate towards destination at specified percentage rate. - rotate_y(direction_xz.angle_to(target_direction_xz) * spin_speed) - - if location_xz.distance_to(target_location_xz) <= (Vector2(direction_xz.x, direction_xz.z) * walk_speed).length(): - target_direction_xz = direction_xz - target_location_xz = location_xz - task = "idle" + pass "spin": - if direction_xz.angle_to(target_direction_xz) >= dir_accuracy: - # Rotate towards destination at specified percentage rate. - rotate_y(direction_xz.angle_to(target_direction_xz) * spin_speed) + if !spinning: + var spin_amount = rng.randi_range(-360, 360) + spinning = true + + if spin_amount > 0: + rotate_y(5) + spin_amount -= 5 + elif spin_amount < 0: + rotate_y(-5) + spin_amount += 5 else: task = "idle" - - -func _physics_process(delta): - # Add the gravity. - if not is_on_floor(): - velocity.y -= gravity * delta + spinning = false + + "wait": + # Idle Animation goes here! + wait_time += 1 + if wait_time == 100: + task = "idle" + wait_time = 0 - # Walk to target location. - if location_xz.distance_to(target_location_xz) > (Vector2(direction_xz.x, direction_xz.z) * walk_speed).length(): - velocity.x = direction_xz.x * walk_speed - velocity.z = direction_xz.z * walk_speed - - move_and_slide() + + diff --git a/godot/player.tscn b/godot/player.tscn index a5c76b0..4ee281f 100644 --- a/godot/player.tscn +++ b/godot/player.tscn @@ -1,13 +1,10 @@ -[gd_scene load_steps=6 format=3 uid="uid://7utef1nnena8"] +[gd_scene load_steps=4 format=3 uid="uid://7utef1nnena8"] [ext_resource type="Script" path="res://Player.gd" id="1_7gpdp"] [ext_resource type="PackedScene" uid="uid://bgoo1lbt28na" path="res://Models/grape_man.tscn" id="2_hg0av"] -[ext_resource type="Script" path="res://Holster.gd" id="3_a68da"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_kb4ms"] -[sub_resource type="SphereShape3D" id="SphereShape3D_6l1w6"] - [node name="Player" type="CharacterBody3D"] script = ExtResource("1_7gpdp") @@ -25,13 +22,4 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.39043) current = true fov = 50.0 -[node name="Holster" type="Node3D" parent="."] -script = ExtResource("3_a68da") - -[node name="Area3D" type="Area3D" parent="Holster"] - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Holster/Area3D"] -transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0) -shape = SubResource("SphereShape3D_6l1w6") - [connection signal="anim_check_grab" from="grape_man" to="." method="_on_grape_man_anim_check_grab"] diff --git a/godot/tests/TestIsland.tscn b/godot/tests/TestIsland.tscn new file mode 100644 index 0000000..0bcce40 --- /dev/null +++ b/godot/tests/TestIsland.tscn @@ -0,0 +1,259 @@ +[gd_scene load_steps=24 format=3 uid="uid://v3vjhyhrqfhi"] + +[ext_resource type="PackedScene" uid="uid://d2d4uv7o5gx5p" path="res://Level/World/screen_shader.tscn" id="1_ee0bf"] +[ext_resource type="PackedScene" uid="uid://b35w4hlh4n1jt" path="res://Level/World/world_environment.tscn" id="2_wvs0f"] +[ext_resource type="PackedScene" uid="uid://difi2tur2j4dg" path="res://Models/island.tscn" id="3_30dtd"] +[ext_resource type="PackedScene" uid="uid://ctbyl0qbks4k6" path="res://Models/ocean.tscn" id="4_527x8"] +[ext_resource type="PackedScene" uid="uid://d3ccrfjpg4hbv" path="res://Models/palm_curved.tscn" id="5_a3wkm"] +[ext_resource type="PackedScene" uid="uid://c1n2lfcn4rkx7" path="res://Models/palm_default.tscn" id="6_106fc"] +[ext_resource type="PackedScene" uid="uid://hg1yr5rnxd47" path="res://Models/palm_young.tscn" id="7_ill0p"] +[ext_resource type="PackedScene" uid="uid://g8vvg7c5ddkr" path="res://Models/rocks/rock_1.tscn" id="8_lwun6"] +[ext_resource type="PackedScene" uid="uid://bjafsu0utvm0g" path="res://Models/rocks/rock_2.tscn" id="9_ywqbr"] +[ext_resource type="PackedScene" uid="uid://bf6bbqbaeh21y" path="res://Models/rocks/rock_3.tscn" id="10_pmsfa"] +[ext_resource type="PackedScene" uid="uid://ce7jbp7f55cro" path="res://Models/buildings/building_1.tscn" id="11_wytos"] +[ext_resource type="PackedScene" uid="uid://cx44bjuxlhq06" path="res://Models/buildings/building_2.tscn" id="12_soqmo"] +[ext_resource type="PackedScene" uid="uid://bm65tvb4irjqw" path="res://Models/buildings/building_3.tscn" id="13_bqbcp"] +[ext_resource type="PackedScene" uid="uid://tky3cco2k7v7" path="res://Models/buildings/building_4.tscn" id="14_26vp6"] +[ext_resource type="PackedScene" uid="uid://dhrnbubumgi5h" path="res://Models/buildings/buildingruined.tscn" id="15_pvu04"] +[ext_resource type="PackedScene" uid="uid://bj8le45u845v3" path="res://Models/beach_decor/floatie.tscn" id="16_o5f84"] +[ext_resource type="PackedScene" uid="uid://dvpank15vkvtv" path="res://Models/beach_decor/parsol.tscn" id="17_tvwlm"] +[ext_resource type="PackedScene" uid="uid://b3aus2kigf8xt" path="res://Models/beach_decor/cooler.tscn" id="18_whrnr"] +[ext_resource type="PackedScene" uid="uid://bw3k2c75qavce" path="res://Models/beach_decor/bucket.tscn" id="19_yg6e1"] +[ext_resource type="PackedScene" uid="uid://g4gmc0pwlak1" path="res://Models/buildings/fence.tscn" id="20_k7apf"] +[ext_resource type="PackedScene" uid="uid://bgoo1lbt28na" path="res://Models/grape_man.tscn" id="21_j8hpq"] +[ext_resource type="PackedScene" uid="uid://c3q6fva1c1baa" path="res://Models/slime.tscn" id="22_f6psl"] +[ext_resource type="PackedScene" uid="uid://7utef1nnena8" path="res://player.tscn" id="23_bmfvv"] + +[node name="World" type="Node3D"] + +[node name="ScreenShader" parent="." instance=ExtResource("1_ee0bf")] + +[node name="WorldEnvironment" parent="." instance=ExtResource("2_wvs0f")] + +[node name="island" parent="." instance=ExtResource("3_30dtd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) + +[node name="ocean" parent="." instance=ExtResource("4_527x8")] +transform = Transform3D(1.96278, 0, 0, 0, 1.96278, 0, 0, 0, 1.96278, 0, 1.6366, 0) + +[node name="Decorations" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) + +[node name="nature" type="Node3D" parent="Decorations"] + +[node name="PalmCurved" parent="Decorations/nature" instance=ExtResource("5_a3wkm")] +transform = Transform3D(0.0166766, 0, 0, 0, 0.0166766, 0, 0, 0, 0.0166766, 2.60201, 1.38633, -0.419671) + +[node name="PalmCurved2" parent="Decorations/nature" instance=ExtResource("5_a3wkm")] +transform = Transform3D(0.0206421, 0, 0, 0, 0.0206421, 0, 0, 0, 0.0206421, 1.60311, 1.38633, -2.78547) + +[node name="PalmCurved3" parent="Decorations/nature" instance=ExtResource("5_a3wkm")] +transform = Transform3D(0.0228198, -0.00350905, 0.0182581, 0.00447368, 0.029093, 0, -0.018046, 0.00277496, 0.0230881, 1.60311, 1.38633, -3.05434) + +[node name="PalmDefault" parent="Decorations/nature" instance=ExtResource("6_106fc")] +transform = Transform3D(0.0285645, 0, 0, 0, 0.0285645, 0, 0, 0, 0.0285645, 1.58539, 1.19143, 0.741446) + +[node name="PalmDefault2" parent="Decorations/nature" instance=ExtResource("6_106fc")] +transform = Transform3D(0.0285645, 0, 0, 0, 0.0285645, 0, 0, 0, 0.0285645, 2.54841, 1.33006, -0.654728) + +[node name="PalmCurved4" parent="Decorations/nature" instance=ExtResource("5_a3wkm")] +transform = Transform3D(-0.0165298, 0, -0.0022076, 0, 0.0166766, 0, 0.0022076, 0, -0.0165298, -2.92791, 1.29787, -2.21588) + +[node name="PalmDefault4" parent="Decorations/nature" instance=ExtResource("6_106fc")] +transform = Transform3D(-0.0283131, 0, -0.00378129, 0, 0.0285645, 0, 0.00378129, 0, -0.0283131, -2.84367, 1.2416, -1.98999) + +[node name="PalmDefault3" parent="Decorations/nature" instance=ExtResource("6_106fc")] +transform = Transform3D(0.0357832, 0, 0, 0, 0.0357832, 0, 0, 0, 0.0357832, 1.57703, 1.36549, -3.01082) + +[node name="PalmYoung" parent="Decorations/nature" instance=ExtResource("7_ill0p")] +transform = Transform3D(0.0328739, 0, 0, 0, 0.0328739, 0, 0, 0, 0.0328739, 0.0679206, 1.38939, 0.60797) + +[node name="PalmYoung2" parent="Decorations/nature" instance=ExtResource("7_ill0p")] +transform = Transform3D(0.0324601, 0, -0.00519927, -0.000382867, 0.0327846, -0.00239032, 0.00518516, 0.00242079, 0.032372, 1.36351, 1.17911, 0.610679) + +[node name="PalmYoung3" parent="Decorations/nature" instance=ExtResource("7_ill0p")] +transform = Transform3D(0.0247079, -4.21649e-12, -0.00395757, -0.00112831, 0.0239843, -0.0070443, 0.00379331, 0.00713409, 0.0236825, 1.68554, 1.21103, 0.610679) + +[node name="PalmDefault5" parent="Decorations/nature" instance=ExtResource("6_106fc")] +transform = Transform3D(0.0105791, -0.0084015, -0.025168, 0.00325558, 0.027301, -0.00774509, 0.0263328, 0, 0.0110687, -0.427893, 1.9423, -2.64889) + +[node name="PalmYoung4" parent="Decorations/nature" instance=ExtResource("7_ill0p")] +transform = Transform3D(0.00756592, -0.0117757, -0.0297453, 0.00192772, 0.0306781, -0.0116546, 0.0319333, 0.000938053, 0.00775109, -0.391226, 1.9407, -2.90411) + +[node name="PalmYoung5" parent="Decorations/nature" instance=ExtResource("7_ill0p")] +transform = Transform3D(0.00614041, -0.0133402, -0.0202603, 0.000709091, 0.0209891, -0.0136051, 0.0242474, 0.00276446, 0.00552858, -0.293324, 2.04682, -2.60724) + +[node name="PalmDefault6" parent="Decorations/nature" instance=ExtResource("6_106fc")] +transform = Transform3D(0.0378488, 0, 0, 0, 0.0378488, 0, 0, 0, 0.0378488, -2.78499, 0.880813, -5.32234) + +[node name="PalmYoung6" parent="Decorations/nature" instance=ExtResource("7_ill0p")] +transform = Transform3D(0.0324601, 0, -0.00519927, -0.000382867, 0.0327846, -0.00239032, 0.00518516, 0.00242079, 0.032372, -2.92514, 0.929941, -5.44034) + +[node name="PalmYoung7" parent="Decorations/nature" instance=ExtResource("7_ill0p")] +transform = Transform3D(0.0247079, -4.21649e-12, -0.00395757, -0.00112831, 0.0239843, -0.0070443, 0.00379331, 0.00713409, 0.0236825, -2.48546, 1.27716, -5.5655) + +[node name="rock1" parent="Decorations/nature" instance=ExtResource("8_lwun6")] +transform = Transform3D(2.22588, -0.121134, 0, 0.121134, 2.22588, 0, 0, 0, 2.22917, 1.5143, 1.55265, -0.92903) + +[node name="rock2" parent="Decorations/nature" instance=ExtResource("9_ywqbr")] +transform = Transform3D(0.691597, 0, 2.18402, 0, 2.29091, 0, -2.18402, 0, 0.691597, -2.49043, 1.75613, -2.80585) + +[node name="rock4" parent="Decorations/nature" instance=ExtResource("9_ywqbr")] +transform = Transform3D(1.07799, 0, -2.02144, 0, 2.29091, 0, 2.02144, 0, 1.07799, 2.91299, 1.48205, -2.24697) + +[node name="rock3" parent="Decorations/nature" instance=ExtResource("10_pmsfa")] +transform = Transform3D(1.34711, 0, -1.03681, 0, 1.69991, 0, 1.03681, 0, 1.34711, -0.627084, 1.6587, -0.745724) + +[node name="rock5" parent="Decorations/nature" instance=ExtResource("10_pmsfa")] +transform = Transform3D(2.17971, 0, 1.18206, 0, 2.4796, 0, -1.18206, 0, 2.17971, -2.78722, 1.02155, -5.94306) + +[node name="buildings" type="Node3D" parent="Decorations"] + +[node name="buildingtall" parent="Decorations/buildings" instance=ExtResource("11_wytos")] +transform = Transform3D(21.8862, 0, 0, 0, 21.8862, 0, 0, 0, 21.8862, -4.3809, 2.55474, 2.89074) + +[node name="buildingtall2" parent="Decorations/buildings" instance=ExtResource("11_wytos")] +transform = Transform3D(13.5064, 0, 0, 0, 13.5064, 0, 0, 0, 13.5064, -1.47841, 2.55474, -12.1844) + +[node name="buildingtall3" parent="Decorations/buildings" instance=ExtResource("11_wytos")] +transform = Transform3D(10.4606, 0, 0, 0, 10.4606, 0, 0, 0, 10.4606, 5.31898, 2.55474, -8.06938) + +[node name="buildingtall5" parent="Decorations/buildings" instance=ExtResource("11_wytos")] +transform = Transform3D(-0.0729599, 0, 21.8861, 0, 21.8862, 0, -21.8861, 0, -0.0729599, 12.1925, 2.55474, -11.372) + +[node name="buildingtall6" parent="Decorations/buildings" instance=ExtResource("11_wytos")] +transform = Transform3D(-0.0450251, 0, 13.5063, 0, 13.5064, 0, -13.5063, 0, -0.0450251, -2.89216, 2.55474, -14.2242) + +[node name="buildingtall7" parent="Decorations/buildings" instance=ExtResource("11_wytos")] +transform = Transform3D(-0.0348714, 0, 10.4605, 0, 10.4606, 0, -10.4605, 0, -0.0348714, 1.20015, 2.55474, -21.0353) + +[node name="buildingtall4" parent="Decorations/buildings" instance=ExtResource("11_wytos")] +transform = Transform3D(10.4606, 0, 0, 0, 10.4606, 0, 0, 0, 10.4606, 8.3496, 2.55474, 5.62082) + +[node name="buildingdark" parent="Decorations/buildings" instance=ExtResource("12_soqmo")] +transform = Transform3D(4.44687, 0, 0, 0, 4.44687, 0, 0, 0, 4.44687, -4.40636, 1.95165, 3.4984) + +[node name="buildingdark4" parent="Decorations/buildings" instance=ExtResource("12_soqmo")] +transform = Transform3D(6.78288, 0, 0, 0, 6.78288, 0, 0, 0, 6.78288, -6.16993, 1.95165, -3.65367) + +[node name="buildingtall8" parent="Decorations/buildings" instance=ExtResource("11_wytos")] +transform = Transform3D(-0.0116848, 0, 10.4606, 0, 10.4606, 0, -10.4606, 0, -0.0116848, -14.3399, 2.55474, -17.0464) + +[node name="buildingtall9" parent="Decorations/buildings" instance=ExtResource("11_wytos")] +transform = Transform3D(-13.5063, 0, -0.0601121, 0, 13.5064, 0, 0.0601121, 0, -13.5063, -20.4855, 2.55474, -8.82839) + +[node name="buildingdark8" parent="Decorations/buildings" instance=ExtResource("12_soqmo")] +transform = Transform3D(-0.00757671, 0, 6.78287, 0, 6.78288, 0, -6.78287, 0, -0.00757671, -9.91133, 1.95165, -5.56244) + +[node name="buildingdark2" parent="Decorations/buildings" instance=ExtResource("12_soqmo")] +transform = Transform3D(4.44687, 0, 0, 0, 4.44687, 0, 0, 0, 4.44687, 6.77348, 1.95165, 3.4984) + +[node name="buildingdark3" parent="Decorations/buildings" instance=ExtResource("12_soqmo")] +transform = Transform3D(4.44687, 0, 0, 0, 4.44687, 0, 0, 0, 4.44687, 5.32956, 1.95165, 3.4984) + +[node name="buildingdark5" parent="Decorations/buildings" instance=ExtResource("12_soqmo")] +transform = Transform3D(7.67301, 0, 0, 0, 7.67301, 0, 0, 0, 7.67301, -0.410835, 2.81886, 6.63391) + +[node name="buildinggray" parent="Decorations/buildings" instance=ExtResource("13_bqbcp")] +transform = Transform3D(6.28093, 0, 0, 0, 6.28093, 0, 0, 0, 6.28093, 8.30197, 1.03036, -1.61307) + +[node name="buildinggray2" parent="Decorations/buildings" instance=ExtResource("13_bqbcp")] +transform = Transform3D(6.28093, 0, 0, 0, 6.28093, 0, 0, 0, 6.28093, 8.30197, 1.03036, -3.69042) + +[node name="buildinggray3" parent="Decorations/buildings" instance=ExtResource("13_bqbcp")] +transform = Transform3D(6.28093, 0, 0, 0, 6.28093, 0, 0, 0, 6.28093, 8.30197, 1.03036, -10.8574) + +[node name="buildingshort" parent="Decorations/buildings" instance=ExtResource("14_26vp6")] +transform = Transform3D(4.16771, 0, 0, 0, 4.16771, 0, 0, 0, 4.16771, -0.459043, 1.40556, 3.90663) + +[node name="buildingshort3" parent="Decorations/buildings" instance=ExtResource("14_26vp6")] +transform = Transform3D(4.57392, 0, 0, 0, 4.57392, 0, 0, 0, 4.57392, -6.12576, 1.40556, -10.1037) + +[node name="buildingdark6" parent="Decorations/buildings" instance=ExtResource("12_soqmo")] +transform = Transform3D(-0.0169875, 0, -6.71246, 0, 6.71248, 0, 6.71246, 0, -0.0169875, -4.48605, 2.0444, 15.7302) + +[node name="buildingdark7" parent="Decorations/buildings" instance=ExtResource("12_soqmo")] +transform = Transform3D(-0.0259113, 0, -10.2386, 0, 10.2386, 0, 10.2386, 0, -0.0259113, 6.31659, 2.0444, 13.0954) + +[node name="buildingshort6" parent="Decorations/buildings" instance=ExtResource("14_26vp6")] +transform = Transform3D(-0.0174728, 0, -6.90423, 0, 6.90426, 0, 6.90423, 0, -0.0174728, 16.0526, 1.22007, 13.1868) + +[node name="buildingshort2" parent="Decorations/buildings" instance=ExtResource("14_26vp6")] +transform = Transform3D(4.16771, 0, 0, 0, 4.16771, 0, 0, 0, 4.16771, 1.65087, 1.40556, 3.90663) + +[node name="buildingshort4" parent="Decorations/buildings" instance=ExtResource("14_26vp6")] +transform = Transform3D(4.02251, 0, 0, 0, 4.02251, 0, 0, 0, 4.02251, 1.64013, 1.40556, -9.83171) + +[node name="buildingshort5" parent="Decorations/buildings" instance=ExtResource("14_26vp6")] +transform = Transform3D(4.02251, 0, 0, 0, 4.02251, 0, 0, 0, 4.02251, 3.67653, 1.40556, -9.83171) + +[node name="buildingruined" parent="Decorations/buildings" instance=ExtResource("15_pvu04")] +transform = Transform3D(3, 0, 0, 0, 7, 0, 0, 0, 3, 0.264704, 3.59073, -4.06142) + +[node name="beach items" type="Node3D" parent="Decorations"] + +[node name="Floatie" parent="Decorations/beach items" instance=ExtResource("16_o5f84")] +transform = Transform3D(0.15, 0, 0, 0, 0.15, 0, 0, 0, 0.15, -0.784158, 0.853456, 2.16031) + +[node name="Floatie2" parent="Decorations/beach items" instance=ExtResource("16_o5f84")] +transform = Transform3D(0.142475, -0.0469124, 0, 0.0469124, 0.142475, 0, 0, 0, 0.15, -3.06407, 0.899973, -0.715843) + +[node name="Floatie3" parent="Decorations/beach items" instance=ExtResource("16_o5f84")] +transform = Transform3D(0.130141, 0.074587, 0, -0.074587, 0.130141, 0, 0, 0, 0.15, 3.48612, 0.899973, -0.715843) + +[node name="Floatie4" parent="Decorations/beach items" instance=ExtResource("16_o5f84")] +transform = Transform3D(0.130141, 0.074587, 0, -0.074587, 0.130141, 0, 0, 0, 0.15, 0.886782, 1.39103, -0.739674) + +[node name="Parsol" parent="Decorations/beach items" instance=ExtResource("17_tvwlm")] +transform = Transform3D(0.15, 0, 0, 0, 0.15, 0, 0, 0, 0.15, -1.66573, 0.876208, 1.05714) + +[node name="Parsol4" parent="Decorations/beach items" instance=ExtResource("17_tvwlm")] +transform = Transform3D(-0.0239309, 0.0261311, -0.145755, 0.020213, 0.14684, 0.023007, 0.146693, -0.0159705, -0.0269481, 1.76494, 1.33168, -0.229817) + +[node name="Parsol5" parent="Decorations/beach items" instance=ExtResource("17_tvwlm")] +transform = Transform3D(-0.0239309, 0.0261311, -0.145755, 0.020213, 0.14684, 0.023007, 0.146693, -0.0159705, -0.0269481, 2.32692, 1.57535, -2.17909) + +[node name="Parsol2" parent="Decorations/beach items" instance=ExtResource("17_tvwlm")] +transform = Transform3D(0.1347, -6.66134e-17, 0.0660003, -0.0146604, 0.146253, 0.0299204, -0.0643514, -0.0333191, 0.131334, -1.14782, 1.47649, -0.558166) + +[node name="Parsol3" parent="Decorations/beach items" instance=ExtResource("17_tvwlm")] +transform = Transform3D(0.134699, 1.78109e-09, 0.0660003, 0.0272818, 0.136585, -0.0556792, -0.0600977, 0.0620038, 0.122653, -1.99932, 1.60507, -2.17045) + +[node name="Cooler" parent="Decorations/beach items" instance=ExtResource("18_whrnr")] +transform = Transform3D(0.120432, 0, 0.0894211, 0, 0.15, 0, -0.0894211, 0, 0.120432, 0.152196, 1.35823, -1.06364) + +[node name="Cooler3" parent="Decorations/beach items" instance=ExtResource("18_whrnr")] +transform = Transform3D(0.148429, 0.0216508, 0, -0.0216154, 0.148186, -0.00857972, -0.00123839, 0.00848987, 0.149754, 1.4826, 1.19789, 0.782173) + +[node name="Cooler2" parent="Decorations/beach items" instance=ExtResource("18_whrnr")] +transform = Transform3D(0.0773985, -0.0174174, -0.127303, -0.0231678, 0.144288, -0.0338269, 0.126383, 0.0371166, 0.071761, -2.22704, 1.55195, -2.24528) + +[node name="Bucket" parent="Decorations/beach items" instance=ExtResource("19_yg6e1")] +transform = Transform3D(0.15, 0, 0, 0, 0.15, 0, 0, 0, 0.15, 0.0735223, 1.38544, -0.541391) + +[node name="slimepen" type="Node3D" parent="Decorations"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.406997, 0.0234586, 0.519028) + +[node name="fence" parent="Decorations/slimepen" instance=ExtResource("20_k7apf")] +transform = Transform3D(0.75, 0, 0, 0, 1.8, 0, 0, 0, 1.8, -0.193081, 1.39007, -1.43506) + +[node name="fence2" parent="Decorations/slimepen" instance=ExtResource("20_k7apf")] +transform = Transform3D(-6.55671e-08, 0, 1.5, 0, 1.5, 0, -1.5, 0, -6.55671e-08, 0, 1.40507, -1.34639) + +[node name="fence3" parent="Decorations/slimepen" instance=ExtResource("20_k7apf")] +transform = Transform3D(-6.55671e-08, 0, -1.5, 0, 1.5, 0, 1.5, 0, -6.55671e-08, 0, 1.40507, -1.34639) + +[node name="fence4" parent="Decorations/slimepen" instance=ExtResource("20_k7apf")] +transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, 1.40507, -2.10425) + +[node name="grape_man" parent="." instance=ExtResource("21_j8hpq")] +transform = Transform3D(0.065, 0, 0, 0, 0.065, 0, 0, 0, 0.065, -0.219532, 2.64323, 0) + +[node name="slime" parent="." instance=ExtResource("22_f6psl")] +transform = Transform3D(0.035, 0, 0, 0, 0.035, 0, 0, 0, 0.035, -0.240886, 2.72271, 0.267039) + +[node name="Camera3D" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 0.965509, 0.26037, 0, -0.26037, 0.965509, 0, 5.42228, 4.14616) + +[node name="Player" parent="." instance=ExtResource("23_bmfvv")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.548558, 2.93052, 0.413536) diff --git a/godot/villager.tscn b/godot/villager.tscn index 118e359..d118819 100644 --- a/godot/villager.tscn +++ b/godot/villager.tscn @@ -6,11 +6,13 @@ [sub_resource type="CapsuleMesh" id="CapsuleMesh_b3srs"] -[node name="Villager" type="CharacterBody3D"] +[node name="Node3D" type="Node3D"] script = ExtResource("1_ardgw") -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +[node name="RigidBody3D" type="RigidBody3D" parent="."] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"] shape = SubResource("CapsuleShape3D_s4x8n") -[node name="MeshInstance3D" type="MeshInstance3D" parent="CollisionShape3D"] +[node name="MeshInstance3D" type="MeshInstance3D" parent="RigidBody3D/CollisionShape3D"] mesh = SubResource("CapsuleMesh_b3srs")