Add player and rig

This commit is contained in:
Nathan Chapman 2025-05-06 20:34:15 -06:00
parent 93e2485e9e
commit 7b195558e1
4 changed files with 208 additions and 12 deletions

View File

@ -1,6 +1,10 @@
[gd_scene load_steps=5 format=3 uid="uid://dw0lbkh31rofd"]
[gd_scene load_steps=10 format=3 uid="uid://dw0lbkh31rofd"]
[ext_resource type="PackedScene" uid="uid://nsv4lbw7j8mi" path="res://src/scenes/player/player.tscn" id="1_crbv0"]
[ext_resource type="PackedScene" uid="uid://b1fe4n68iivfm" path="res://assets/models/environment/rock_cliff_env_03.glb" id="2_d2tjv"]
[ext_resource type="PackedScene" uid="uid://duotcsmd2fwkk" path="res://assets/models/environment/bush_vege_2.glb" id="3_fqsoq"]
[ext_resource type="PackedScene" uid="uid://bdg8366pt8iu7" path="res://assets/models/environment/topiary_tree_vege_01.glb" id="4_uvsco"]
[ext_resource type="PackedScene" uid="uid://ddh3p0sg6i080" path="res://assets/models/environment/tree_group_vege.glb" id="5_eyekk"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_amufq"]
sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1)
@ -15,6 +19,9 @@ sky = SubResource("Sky_crbv0")
tonemap_mode = 2
glow_enabled = true
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_d2tjv"]
albedo_color = Color(0.321569, 0.317647, 0.117647, 1)
[node name="Level" type="Node3D"]
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
@ -24,15 +31,66 @@ environment = SubResource("Environment_d2tjv")
transform = Transform3D(-0.866025, -0.433013, 0.25, 0, 0.5, 0.866025, -0.5, 0.75, -0.433013, 0, 0, 0)
shadow_enabled = true
[node name="CSGBox3D" type="CSGBox3D" parent="."]
[node name="Floor" type="CSGBox3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0)
use_collision = true
size = Vector3(50, 1, 50)
material = SubResource("StandardMaterial3D_d2tjv")
[node name="Player" parent="." instance=ExtResource("1_crbv0")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.00648, 1, 2.32963)
[node name="CSGBox3D2" type="CSGBox3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.04248, 1.91993, 5.20496)
use_collision = true
size = Vector3(7.08496, 4.78943, 7.72217)
[node name="MapBoundary" type="Node3D" parent="."]
[node name="RockWall" parent="MapBoundary" instance=ExtResource("2_d2tjv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.05985, -22.2671)
[node name="rock_cliff_env_04" parent="MapBoundary/RockWall" instance=ExtResource("2_d2tjv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.5823, 0, 0)
[node name="rock_cliff_env_05" parent="MapBoundary/RockWall" instance=ExtResource("2_d2tjv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.2971, 0, 0)
[node name="RockWall4" parent="MapBoundary" instance=ExtResource("2_d2tjv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.05985, 24.7329)
[node name="rock_cliff_env_04" parent="MapBoundary/RockWall4" instance=ExtResource("2_d2tjv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.5823, 0, 0)
[node name="rock_cliff_env_05" parent="MapBoundary/RockWall4" instance=ExtResource("2_d2tjv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.2971, 0, 0)
[node name="RockWall2" parent="MapBoundary" instance=ExtResource("2_d2tjv")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -22, 2.05985, -0.474918)
[node name="rock_cliff_env_04" parent="MapBoundary/RockWall2" instance=ExtResource("2_d2tjv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.5823, 0, 0)
[node name="rock_cliff_env_05" parent="MapBoundary/RockWall2" instance=ExtResource("2_d2tjv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.2971, 0, 0)
[node name="RockWall3" parent="MapBoundary" instance=ExtResource("2_d2tjv")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 25.8467, 2.05985, -0.474918)
[node name="rock_cliff_env_04" parent="MapBoundary/RockWall3" instance=ExtResource("2_d2tjv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.5823, 0, 0)
[node name="rock_cliff_env_05" parent="MapBoundary/RockWall3" instance=ExtResource("2_d2tjv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.2971, 0, 0)
[node name="Vegetation" type="Node3D" parent="."]
[node name="bush_vege_2" parent="Vegetation" instance=ExtResource("3_fqsoq")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.27263, 0, -9.86316)
[node name="bush_vege_3" parent="Vegetation" instance=ExtResource("3_fqsoq")]
transform = Transform3D(0.762826, 0, -0.646603, 0, 1, 0, 0.646603, 0, 0.762826, -14.3852, 0, 1.80543)
[node name="topiary_tree_vege_01" parent="Vegetation" instance=ExtResource("4_uvsco")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.87122, 0, 7.43558)
[node name="topiary_tree_vege_02" parent="Vegetation" instance=ExtResource("4_uvsco")]
transform = Transform3D(0.910214, 0, 0.414137, 0, 1, 0, -0.414137, 0, 0.910214, 3.17554, 1.90735e-06, -15.3238)
[node name="tree_group_vege" parent="Vegetation" instance=ExtResource("5_eyekk")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.01405, 3.8147e-06, 6.12766)

View File

@ -2,11 +2,10 @@
[ext_resource type="Script" uid="uid://csgybabwb8cbg" path="res://src/scripts/player/player.gd" id="1_swhsd"]
[ext_resource type="Script" uid="uid://cxnvqh8ijf0ox" path="res://src/scripts/player/boom.gd" id="2_qopur"]
[ext_resource type="PackedScene" uid="uid://ckwydalda0teo" path="res://src/scenes/player/rig.tscn" id="3_n52bt"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_yx56f"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_swhsd"]
[sub_resource type="SeparationRayShape3D" id="SeparationRayShape3D_swhsd"]
[node name="Player" type="CharacterBody3D"]
@ -15,9 +14,6 @@ script = ExtResource("1_swhsd")
[node name="CollisionShape" type="CollisionShape3D" parent="."]
shape = SubResource("CapsuleShape3D_yx56f")
[node name="Mesh" type="MeshInstance3D" parent="."]
mesh = SubResource("CapsuleMesh_swhsd")
[node name="Boom" type="SpringArm3D" parent="." node_paths=PackedStringArray("target")]
transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, 0, 1, 0)
shape = SubResource("SeparationRayShape3D_swhsd")
@ -30,3 +26,8 @@ target = NodePath("../HorizontalPivot/VerticalPivot")
[node name="HorizontalPivot" type="Node3D" parent="."]
[node name="VerticalPivot" type="Node3D" parent="HorizontalPivot"]
[node name="RigPivot" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
[node name="Rig" parent="RigPivot" instance=ExtResource("3_n52bt")]

128
src/scenes/player/rig.tscn Normal file
View File

@ -0,0 +1,128 @@
[gd_scene load_steps=2 format=3 uid="uid://ckwydalda0teo"]
[ext_resource type="PackedScene" uid="uid://xivf38sp0l78" path="res://assets/models/character/character_rig.glb" id="1_icnkf"]
[node name="Rig" type="Node3D"]
[node name="CharacterRig" parent="." instance=ExtResource("1_icnkf")]
[node name="Skeleton3D" parent="CharacterRig/GameRig" index="0"]
bones/0/position = Vector3(0.0276682, 0.903179, 0.0086448)
bones/0/rotation = Quaternion(0.155586, 1.17758e-07, 1.85474e-08, 0.987822)
bones/1/rotation = Quaternion(-0.0497934, 0.00362305, 0.058142, 0.997059)
bones/2/position = Vector3(6.23959e-10, 0.140892, 3.06754e-08)
bones/2/rotation = Quaternion(0.00933042, 0.000201999, -0.0491224, 0.998749)
bones/3/position = Vector3(2.32707e-09, 0.175705, -2.21538e-07)
bones/3/rotation = Quaternion(-0.265407, 0.0310372, -0.0790426, 0.96039)
bones/4/position = Vector3(-7.45063e-09, 0.0827501, -4.22106e-08)
bones/4/rotation = Quaternion(0.430518, 0.0184732, 0.225987, 0.873638)
bones/5/rotation = Quaternion(-0.0948568, -5.65495e-09, -1.01598e-07, 0.995491)
bones/6/rotation = Quaternion(-0.180423, -0.04801, -0.149312, 0.971004)
bones/7/position = Vector3(0.0276682, 0.903179, 0.00864496)
bones/7/rotation = Quaternion(-0.0703741, -0.739249, -0.405459, 0.533068)
bones/8/position = Vector3(0.0276682, 0.903179, 0.00864482)
bones/8/rotation = Quaternion(-0.070374, 0.739249, 0.405459, 0.533068)
bones/9/position = Vector3(0.158812, 0.968479, 0.0256444)
bones/9/rotation = Quaternion(0.986866, -0.0347172, -0.036593, -0.153461)
bones/10/position = Vector3(-1.28047e-08, 0.263565, 5.48525e-08)
bones/10/rotation = Quaternion(-4.57173e-08, -0.0075665, 2.94687e-08, 0.999971)
bones/11/position = Vector3(-7.19732e-09, 0.263565, -7.01984e-08)
bones/11/rotation = Quaternion(0.533853, -0.00756582, 0.00477709, 0.84553)
bones/12/position = Vector3(-6.11355e-09, 0.223526, 5.72814e-09)
bones/12/rotation = Quaternion(2.18907e-08, -0.00327906, 7.14397e-08, 0.999995)
bones/13/position = Vector3(-1.06738e-08, 0.223526, 1.43191e-08)
bones/13/rotation = Quaternion(-0.486355, 0.0179254, -0.0581729, 0.871638)
bones/14/position = Vector3(2.45242e-09, 0.139878, -1.43056e-08)
bones/14/rotation = Quaternion(-0.000103867, 0.96745, -0.253064, -0.000381529)
bones/15/position = Vector3(-0.103475, 0.968479, 0.0256444)
bones/15/rotation = Quaternion(0.925588, 1.73114e-05, 0.0210855, 0.377945)
bones/16/position = Vector3(-1.98544e-08, 0.26553, -1.10504e-07)
bones/16/rotation = Quaternion(1.83106e-08, 0.00524275, -7.19832e-08, 0.999986)
bones/17/position = Vector3(1.9963e-08, 0.26553, 2.04309e-08)
bones/17/rotation = Quaternion(0.428998, 0.00524208, -0.00248965, 0.903287)
bones/18/position = Vector3(2.07135e-08, 0.225541, 2.05872e-08)
bones/18/rotation = Quaternion(6.82911e-08, -0.00656821, 1.66762e-09, 0.999978)
bones/19/position = Vector3(6.57201e-09, 0.225541, -9.83437e-09)
bones/19/rotation = Quaternion(-0.676712, -0.0268497, 0.00119576, 0.735757)
bones/20/position = Vector3(1.26393e-08, 0.139878, -1.33116e-08)
bones/20/rotation = Quaternion(-9.94648e-05, 0.967459, -0.253029, -0.00038312)
bones/21/position = Vector3(0.0318322, 1.38876, 0.13565)
bones/21/rotation = Quaternion(-0.498675, -0.214179, -0.455467, 0.705692)
bones/22/position = Vector3(0.198838, 1.40388, 0.0699175)
bones/22/rotation = Quaternion(-0.208708, 0.364962, 0.899386, -0.119786)
bones/23/position = Vector3(-9.60146e-08, 0.140731, 1.69161e-07)
bones/23/rotation = Quaternion(-1.48099e-08, -0.153514, -5.42637e-08, 0.988147)
bones/24/position = Vector3(-5.41769e-08, 0.140731, 9.8138e-08)
bones/24/rotation = Quaternion(0.52553, -0.153514, -0.276021, 0.789977)
bones/25/position = Vector3(1.8073e-08, 0.124275, 4.49017e-08)
bones/25/rotation = Quaternion(-4.36853e-07, 0.0212255, 1.16255e-07, 0.999775)
bones/26/position = Vector3(1.16654e-07, 0.124275, 2.52368e-07)
bones/26/rotation = Quaternion(-0.139349, 0.0209606, -0.253272, 0.957077)
bones/28/rotation = Quaternion(0.702583, -0.000939986, -0.00133528, 0.7116)
bones/29/rotation = Quaternion(0.74112, 0.00218249, 0.00265346, 0.671364)
bones/30/rotation = Quaternion(0.32527, 0.890055, 0.295977, -0.119997)
bones/31/rotation = Quaternion(0.514882, -0.114149, 0.114483, 0.841879)
bones/32/rotation = Quaternion(0.592003, -0.038135, -0.0906995, 0.799907)
bones/34/position = Vector3(-0.00316934, 0.0987206, 0.0147916)
bones/34/rotation = Quaternion(-0.0674701, 0.718446, 0.0663974, 0.689112)
bones/35/rotation = Quaternion(0.580804, -0.000892605, -0.0014976, 0.814042)
bones/36/rotation = Quaternion(0.682777, 0.00174459, 0.00256601, 0.730621)
bones/37/rotation = Quaternion(-0.00426538, 0.736714, 0.0394789, 0.675038)
bones/38/position = Vector3(-0.00622947, 0.0926414, -0.0236346)
bones/38/rotation = Quaternion(-0.109874, 0.743351, 0.0333518, 0.658973)
bones/39/rotation = Quaternion(0.63004, 0.00151927, 0.00238002, 0.776557)
bones/40/rotation = Quaternion(0.652642, -0.00308157, -0.0042118, 0.757649)
bones/41/rotation = Quaternion(-0.0684189, 0.72411, 0.0332352, 0.685477)
bones/42/position = Vector3(-0.00715369, 0.0679858, -0.0481985)
bones/42/rotation = Quaternion(-0.120913, 0.799109, 0.0358923, 0.587807)
bones/43/rotation = Quaternion(0.498693, -0.020271, -0.0256949, 0.866161)
bones/44/rotation = Quaternion(0.715384, 0.0353053, 0.0573144, 0.695481)
bones/45/rotation = Quaternion(-0.129059, 0.728936, -0.0250262, 0.67184)
bones/46/position = Vector3(-0.00423753, 1.39393, 0.137642)
bones/46/rotation = Quaternion(-0.437715, 0.32082, 0.377528, 0.750302)
bones/47/position = Vector3(-0.166419, 1.45619, 0.090094)
bones/47/rotation = Quaternion(-0.165904, -0.456877, 0.803189, 0.344421)
bones/48/position = Vector3(-1.79147e-07, 0.142917, 7.63032e-08)
bones/48/rotation = Quaternion(-2.96833e-08, -0.0422389, 4.1837e-08, 0.999108)
bones/49/position = Vector3(1.0754e-07, 0.142917, 2.90456e-08)
bones/49/rotation = Quaternion(0.316857, -0.0422384, 0.415565, 0.851542)
bones/50/position = Vector3(5.42904e-08, 0.126555, 7.38829e-09)
bones/50/rotation = Quaternion(-1.10793e-07, 0.0256502, 2.23855e-08, 0.999671)
bones/51/position = Vector3(-9.53121e-09, 0.126556, 5.9332e-09)
bones/51/rotation = Quaternion(-0.0783404, 0.0259177, 0.201201, 0.976068)
bones/52/rotation = Quaternion(-0.2563, 0.855859, 0.0299184, -0.448241)
bones/53/rotation = Quaternion(0.694912, 0.107144, -0.103548, 0.703488)
bones/54/rotation = Quaternion(0.741121, -0.00218248, -0.00265434, 0.671363)
bones/55/rotation = Quaternion(-0.32527, 0.890055, 0.295976, 0.119998)
bones/56/rotation = Quaternion(0.514882, 0.11415, -0.114482, 0.841879)
bones/57/rotation = Quaternion(0.592004, 0.038134, 0.0906991, 0.799907)
bones/59/position = Vector3(0.00316948, 0.0987208, 0.0147918)
bones/59/rotation = Quaternion(0.138771, -0.704916, 0.15571, 0.677932)
bones/60/rotation = Quaternion(0.579985, 0.0462612, -0.0308753, 0.812727)
bones/61/rotation = Quaternion(0.682777, -0.00174739, -0.00256467, 0.730621)
bones/62/rotation = Quaternion(-0.0042654, -0.736714, -0.0394787, 0.675038)
bones/63/position = Vector3(0.00622964, 0.0926415, -0.0236343)
bones/63/rotation = Quaternion(0.104096, -0.719607, 0.186262, 0.660785)
bones/64/rotation = Quaternion(0.670693, 0.0163393, -0.0185665, 0.741323)
bones/65/rotation = Quaternion(0.692499, 0.00330374, 0.0040394, 0.7214)
bones/66/rotation = Quaternion(-0.0684177, -0.72411, -0.033234, 0.685477)
bones/67/position = Vector3(0.00715371, 0.0679857, -0.0481984)
bones/67/rotation = Quaternion(0.108364, -0.768224, 0.166291, 0.608635)
bones/68/rotation = Quaternion(0.629954, 0.0295146, 0.0177509, 0.775868)
bones/69/rotation = Quaternion(0.816677, -0.0439534, -0.0509862, 0.573155)
bones/70/rotation = Quaternion(-0.12906, -0.728936, 0.0250259, 0.67184)
bones/71/position = Vector3(0.118584, 1.30715, 0.0484368)
bones/71/rotation = Quaternion(0.0614123, 0.53913, 0.83878, 0.0449082)
bones/72/position = Vector3(-0.119248, 1.34121, 0.0615744)
bones/72/rotation = Quaternion(0.0614123, 0.53913, 0.83878, 0.0449082)
[node name="Knight_01" parent="CharacterRig/GameRig/Skeleton3D" index="0"]
visible = false
[node name="Villager_01" parent="CharacterRig/GameRig/Skeleton3D" index="2"]
visible = false
[node name="Villager_02" parent="CharacterRig/GameRig/Skeleton3D" index="3"]
visible = false
[editable path="CharacterRig"]

View File

@ -10,9 +10,11 @@ var _look := Vector2.ZERO
@export var mouse_sensitivity: float = 0.0075
@export var camera_max_pitch: float = 25
@export var camera_min_pitch: float = -75
@export var animation_decay: float = 25.0
@onready var horizontal_pivot: Node3D = $HorizontalPivot
@onready var vertical_pivot: Node3D = $HorizontalPivot/VerticalPivot
@onready var rig_pivot: Node3D = $RigPivot
func _ready() -> void:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
@ -31,6 +33,7 @@ func _physics_process(delta: float) -> void:
if direction:
velocity.x = direction.x * SPEED
velocity.z = direction.z * SPEED
look_toward_direction(direction, delta)
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
velocity.z = move_toward(velocity.z, 0, SPEED)
@ -56,3 +59,9 @@ func get_movement_direction() -> Vector3:
var input_vector := Vector3(input_dir.x, 0, input_dir.y).normalized()
var direction := horizontal_pivot.global_transform.basis * input_vector
return direction
func look_toward_direction(direction: Vector3, delta: float) -> void:
var target_transform := rig_pivot.global_transform.looking_at(
rig_pivot.global_position + direction, Vector3.UP, true
)
rig_pivot.global_transform = rig_pivot.global_transform.interpolate_with(target_transform, 1.0 - exp(-animation_decay * delta))