working on player character

This commit is contained in:
2025-06-23 21:29:10 -05:00
parent 6bd069a7e2
commit 4d27d00b73
10 changed files with 265 additions and 56 deletions

View File

@@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://hmyrn2pbbhpm"]
[ext_resource type="Script" uid="uid://bici4k5vkuoos" path="res://Scripts/player_camera.gd" id="1_ocbkm"]
[node name="Camera3D" type="Camera3D"]
transform = Transform3D(1, 0, 0, 0, 0.25038, 0.968148, 0, -0.968148, 0.25038, 0, 0, 0)
fov = 80.0
script = ExtResource("1_ocbkm")

81
Prefabs/player.tscn Normal file
View File

@@ -0,0 +1,81 @@
[gd_scene load_steps=8 format=4 uid="uid://bacgd5lmvaxea"]
[ext_resource type="Script" uid="uid://bcgt64gerg8pv" path="res://Scripts/player.gd" id="1_5wxv7"]
[ext_resource type="Material" uid="uid://b4rpp31c0dx2m" path="res://Assets/Materials/BasicMat.tres" id="1_y6xdh"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_i3sml"]
resource_name = "Material"
cull_mode = 2
albedo_color = Color(0.90741, 0.668233, 0.565457, 1)
roughness = 0.5
metadata/extras = {
"paint_system": {},
"poliigon_props": {}
}
[sub_resource type="ArrayMesh" id="ArrayMesh_7d2fd"]
_surfaces = [{
"aabb": AABB(-0.5, -0.5, -0.5, 1, 1, 1),
"format": 34896613377,
"index_count": 132,
"index_data": PackedByteArray("DgAPAAIACAACAA8ACAAQAAIACAAPAAEAAgAQABEAAgARAA4AEgAQAAgAEgAIAAEAEwARABAAEgAUABAAEwAQABQAAAAOABEAAAARABMADAAOAAAADAAEAA4ADgAEAA8ACwAMAAAAAAATAAMACwAAAAMAAwATAAkAFAAJABMAAwAKAAsAAwAJAAoAFAAFAAkACgAJAAUAEgAFABQACwANAAwADAANAAQACwAKABUACwAVAA0ACgAFABYAFgAVAAoABwAFABIABwAWAAUAEgABAAcAFgAGABUABwAGABYADQAVAAYAAQAGAAcADQAGABcAAQAXAAYABAANABcADwAXAAEABAAXAA8A"),
"lods": [0.100898, PackedByteArray("AAABAAIACAACAAEABQACAAgABQAIAAEACQAAAAIACQACAAUAAAAJAAMACgAJAAUAAwAJAAoACwAAAAMAAwAKAAsACwAMAAAADAAEAAAAAAAEAAEACwANAAwADAANAAQACwAKAA0ABAANAAEADQAKAAYADQAGAAEACgAFAAYABQABAAcAAQAGAAcABwAGAAUA"), 0.588343, PackedByteArray("AAABAAIAAwAAAAIABAAAAAMAAAAEAAEAAwACAAUABAADAAUABQACAAEABAAGAAEABAAFAAYABQABAAcAAQAGAAcABwAGAAUA")],
"name": "Material",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 24,
"vertex_data": PackedByteArray("ZeYAAGXmAACZGf//ZeYAAGXmZeb//wAAZeYAAJkZAACZGZkZ//8AAGXmZeYAAAAAAABl5pkZAACZGf//mRkAAGXm//9l5gAAZeaZGQAAAACZGZkZAAAAAJkZAACZGQAAmRkAAGXmAAAAAJkZZeYAAGXmmRn//wAAmRll5v//AAD//2XmZeYAAP//mRll5gAAZeb//5kZAAD//5kZmRkAAP//ZeaZGQAAAACZGZkZAACZGWXmAAAAAAAAZeZl5gAA")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_5wxv7"]
resource_name = "Test1_Cube"
_surfaces = [{
"aabb": AABB(-0.5, -0.5, -0.5, 1, 1, 1),
"attribute_data": PackedByteArray("mVlmRv+fZgaZmZk5ZmZmBplZmXlmJv8/mZllhpjZZkaY2Zl5ZWb//5mZZcb/n5i5/5+Y+f+fZcb/n5k5ZmZlhmWmZkZmZpi5ZmaY+ZlZ/39mJv9/ZiaZef8fZkZmJmZGZmaZOZmZZgZmZpl5mZlmRpmZmXlmZmZGZaaZeWZmmPmZmWXGmZmY+WZmZcaZmZi5ZiZmRmYm/z+Zmf//mZmY+WYmmXlmJv9//x+ZeZmZ/7+ZWWZGmVn/P/9fZkb/n5k5mZn/P5mZmTmZWZl5/1+ZeZlZ/3//n2WGmZllhpmZ/39mJpl5/x9mRmYmZkb/H5l5mZmY+ZmZ////n5j5mZllxv+fZcaZmZj5mZmYuWZmZcZmZpi5mZllxpmZZYb/n2WGmZmYuZmZmXlmZmWGZmaZeZmZZYaZWWZGZmaZeZlZmXlmZmZGZaaZeZmZZkZlpmZGmZmZeZmZmTlmZmZGZmaZOZmZZkaZWf8/mZlmBpmZmTlmJpl5mVlmRplZmXlmJmZG"),
"format": 34896613399,
"index_count": 132,
"index_data": PackedByteArray("GAAZAAIAGAADABkAGgAbABwAGgAdABsAHgAHAAgAHgAQAAcAHwAgACEAHwAiACAAEQAGACMAEQAPAAYAJAAWACUAJgAnAAwAKAApACoADQAKACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOAA7ADkACQA8AD0ACQASADwAPgA/AEAAPgBBAD8AQgBDAEQAQgBFAEMABAAUABUABAATABQACwBGAEcACwBIAEYASQBKAEsASQBMAEoATQBOAE8ATQBQAE4AUQBSAFMAUQBUAFIAVQBWAFcAVQBYAFYAFwBZAAAAFwAFAFkADgBaAAEADgBbAFoAXABdAF4AXABfAF0A"),
"lods": [0.100898, PackedByteArray("AAABAAIADgACAAEAAAADAAEADwAAAAIADwACAAYABgACABAAAAAPAAQABgAQAAcABgAHAAgAEQAPAAYAEQAGAAoACwAKAAYAEgARAAoAEgAKAAwADAAKAA0ACQASAAwABAATABQABAAUABUAFQAAAAQAFQAUABYAFQAXAAAAFQAWABcAFwAFAAAAFwAWAAUA"), 0.588343, PackedByteArray("AAABAAIAAAADAAEABAAAAAIABQAAAAQABAACAAYABgACAAcABgAHAAgACQAEAAYACQAGAAoACwAKAAYACQAKAAwADAAKAA0A")],
"material": SubResource("StandardMaterial3D_i3sml"),
"name": "Material",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 96,
"vertex_data": PackedByteArray("ZeYAAGXm/5+ZGf//Zeb8xWXmZeb///+/mRmZGf///79l5gAAmRn/35kZmRn///+fZeZl5gAA//+ZGf//Zeb//5kZ//+ZGf//mRmZGf///MUAAGXmmRlA3JkZ//+ZGarpmRn//2XmlrGZGf//mRlA3GXm//9l5vzFZeaZGQAA//9l5v//Zeb//5kZmRkAAP//AACZGWXm/MVl5pkZAAD/35kZmRkAAP/fmRkAAJkZ/98AAJkZZeaWsZkZAABl5v+fZeaZGf///7+ZGWXm////v///mRmZGVTV//9l5mXmVNX//2XmmRlU1f//mRll5lTVZeb//5kZ//8AAJkZZeZU1QAAZeaZGVTVAABl5mXmVNUAAJkZmRlU1ZkZZeYAAP//mRkAAGXmlrGZGZkZ//+WsZkZZeb//5axAABl5mXmlrGZGQAAmRlA3JkZmRkAAEDcAACZGZkZQNyZGWXmAABA3GXmAABl5paxZeaZGf//lrH//5kZZeaWsWXm//9l5krA//9l5mXmSsBl5mXm//9KwGXmAACZGUDc//+ZGZkZQNxl5pkZAABA3GXm//+ZGRr7ZeZl5gAAGvv//2XmmRka+5kZAACZGfzFAACZGWXm/MWZGQAAZeb8xQAAmRmZGfzFAABl5mXm/MWZGWXm///8xZkZ//9l5vzFAABl5pkZ/MWZGf//mRn8xQAAZeZl5vzFmRll5gAAqukAAJkZmRmq6ZkZmRkAAKrpAABl5pkZqull5mXmAACq6WXm//+ZGarpmRll5gAAqun//2XmmRmq6WXmmRkAAKrp//+ZGZkZqull5mXmAACq6WXmAABl5vzF//+ZGZkZ/MVl5gAAmRn8xf//mRll5vzFZeb//5kZqun//2XmZeaq6WXm//9l5qrp//9l5pkZqull5mXm///8xf//mRll5vzFZeaZGf///MX//2XmZeb8xWXmmRn///+fmRll5v///MVl5mXm///8xZkZAACZGf+/ZeYAAGXm/79l5gAAmRn/v5kZAABl5v+/AAD/f//i/xz//////////wAA/38AAP9//7//v/9//7//f/+//+L/4nHfZ7EEtQS1DegxxnHfZ7H/4v8c/7//v/9//7//v/+//+L/4gAA/38AAP9/AAD/fzJG8JcAAP9///////////+qKqoqqiqqKqoqqiqqKqoq/3//v1TVVNVU1VTVVNVU1VTVVNX/v/+/MkbwlzJG8JcN6DHGDegxxmcxjaBnMY2gZzGNoHHfZ7HxF8058RfNOfEXzTnFyEUHxchFB8XIRQeNIJdOjSCXTo0gl04Eta6oBLWuqAS1rqj+Of6c/jn+nP45/pz+Of6c/+L/4v/i/+L/4v25/+L9uf/i/bn/4v25+sr6yvrK+sr6yvrK+sr6ygS1BLUEtQS1BLUEtQQ1BDUENQQ1BDUENQQ1BDX/HAFG/xwBRv8cAUb/HAFGBDX2FQQ19hUENfYVBDX2Ff8c/xz/HP8c/xz/HP8c/xwAAP9//+L/HP/i/xwAAP9/AAD/fwAA/38AAP9/")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_7d2fd")
[sub_resource type="BoxMesh" id="BoxMesh_5wxv7"]
size = Vector3(1.59, 0.4, 0.375)
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_y5hcb"]
radius = 0.501894
height = 1.30188
[node name="Player" type="CharacterBody3D"]
script = ExtResource("1_5wxv7")
[node name="Body" type="MeshInstance3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
material_override = ExtResource("1_y6xdh")
mesh = SubResource("ArrayMesh_5wxv7")
skeleton = NodePath("")
metadata/extras = {
"poliigon_props": {},
"rr_curve_obj": {}
}
[node name="OmniLight3D" type="OmniLight3D" parent="Body"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.37607, 0)
light_energy = 0.1
[node name="MeshInstance3D" type="MeshInstance3D" parent="Body"]
transform = Transform3D(-0.487982, 0, -0.872854, 0, 1, 0, 0.872854, 0, -0.487982, 0.351417, 0.11253, -0.601462)
mesh = SubResource("BoxMesh_5wxv7")
skeleton = NodePath("../..")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
shape = SubResource("CapsuleShape3D_y5hcb")

View File

@@ -1,7 +1,9 @@
[gd_scene load_steps=24 format=4 uid="uid://dbqyyunvx6fdj"] [gd_scene load_steps=25 format=4 uid="uid://dbqyyunvx6fdj"]
[ext_resource type="Material" uid="uid://b4rpp31c0dx2m" path="res://Assets/Materials/BasicMat.tres" id="1_8lor2"] [ext_resource type="Material" uid="uid://b4rpp31c0dx2m" path="res://Assets/Materials/BasicMat.tres" id="1_8lor2"]
[ext_resource type="PackedScene" uid="uid://hmyrn2pbbhpm" path="res://Prefabs/PlayerCamera.tscn" id="2_qq11w"]
[ext_resource type="PackedScene" uid="uid://bj1y0fbjtul4a" path="res://Assets/post_processing.tscn" id="2_vab8d"] [ext_resource type="PackedScene" uid="uid://bj1y0fbjtul4a" path="res://Assets/post_processing.tscn" id="2_vab8d"]
[ext_resource type="PackedScene" uid="uid://bacgd5lmvaxea" path="res://Prefabs/player.tscn" id="3_hfnh2"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_31lxn"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_31lxn"]
sky_top_color = Color(0.1, 0.1, 0.1, 1) sky_top_color = Color(0.1, 0.1, 0.1, 1)
@@ -25,49 +27,8 @@ fog_light_color = Color(0.117, 0.14115, 0.18, 1)
fog_light_energy = 1.65 fog_light_energy = 1.65
fog_density = 1.0 fog_density = 1.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_i3sml"] [sub_resource type="BoxShape3D" id="BoxShape3D_qq11w"]
resource_name = "Material" size = Vector3(100, 1, 100)
cull_mode = 2
albedo_color = Color(0.90741, 0.668233, 0.565457, 1)
roughness = 0.5
metadata/extras = {
"paint_system": {},
"poliigon_props": {}
}
[sub_resource type="ArrayMesh" id="ArrayMesh_7d2fd"]
_surfaces = [{
"aabb": AABB(-0.5, -0.5, -0.5, 1, 1, 1),
"format": 34896613377,
"index_count": 132,
"index_data": PackedByteArray("DgAPAAIACAACAA8ACAAQAAIACAAPAAEAAgAQABEAAgARAA4AEgAQAAgAEgAIAAEAEwARABAAEgAUABAAEwAQABQAAAAOABEAAAARABMADAAOAAAADAAEAA4ADgAEAA8ACwAMAAAAAAATAAMACwAAAAMAAwATAAkAFAAJABMAAwAKAAsAAwAJAAoAFAAFAAkACgAJAAUAEgAFABQACwANAAwADAANAAQACwAKABUACwAVAA0ACgAFABYAFgAVAAoABwAFABIABwAWAAUAEgABAAcAFgAGABUABwAGABYADQAVAAYAAQAGAAcADQAGABcAAQAXAAYABAANABcADwAXAAEABAAXAA8A"),
"lods": [0.100898, PackedByteArray("AAABAAIACAACAAEABQACAAgABQAIAAEACQAAAAIACQACAAUAAAAJAAMACgAJAAUAAwAJAAoACwAAAAMAAwAKAAsACwAMAAAADAAEAAAAAAAEAAEACwANAAwADAANAAQACwAKAA0ABAANAAEADQAKAAYADQAGAAEACgAFAAYABQABAAcAAQAGAAcABwAGAAUA"), 0.588343, PackedByteArray("AAABAAIAAwAAAAIABAAAAAMAAAAEAAEAAwACAAUABAADAAUABQACAAEABAAGAAEABAAFAAYABQABAAcAAQAGAAcABwAGAAUA")],
"name": "Material",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 24,
"vertex_data": PackedByteArray("ZeYAAGXmAACZGf//ZeYAAGXmZeb//wAAZeYAAJkZAACZGZkZ//8AAGXmZeYAAAAAAABl5pkZAACZGf//mRkAAGXm//9l5gAAZeaZGQAAAACZGZkZAAAAAJkZAACZGQAAmRkAAGXmAAAAAJkZZeYAAGXmmRn//wAAmRll5v//AAD//2XmZeYAAP//mRll5gAAZeb//5kZAAD//5kZmRkAAP//ZeaZGQAAAACZGZkZAACZGWXmAAAAAAAAZeZl5gAA")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_ipilw"]
resource_name = "Test1_Cube"
_surfaces = [{
"aabb": AABB(-0.5, -0.5, -0.5, 1, 1, 1),
"attribute_data": PackedByteArray("mVlmRv+fZgaZmZk5ZmZmBplZmXlmJv8/mZllhpjZZkaY2Zl5ZWb//5mZZcb/n5i5/5+Y+f+fZcb/n5k5ZmZlhmWmZkZmZpi5ZmaY+ZlZ/39mJv9/ZiaZef8fZkZmJmZGZmaZOZmZZgZmZpl5mZlmRpmZmXlmZmZGZaaZeWZmmPmZmWXGmZmY+WZmZcaZmZi5ZiZmRmYm/z+Zmf//mZmY+WYmmXlmJv9//x+ZeZmZ/7+ZWWZGmVn/P/9fZkb/n5k5mZn/P5mZmTmZWZl5/1+ZeZlZ/3//n2WGmZllhpmZ/39mJpl5/x9mRmYmZkb/H5l5mZmY+ZmZ////n5j5mZllxv+fZcaZmZj5mZmYuWZmZcZmZpi5mZllxpmZZYb/n2WGmZmYuZmZmXlmZmWGZmaZeZmZZYaZWWZGZmaZeZlZmXlmZmZGZaaZeZmZZkZlpmZGmZmZeZmZmTlmZmZGZmaZOZmZZkaZWf8/mZlmBpmZmTlmJpl5mVlmRplZmXlmJmZG"),
"format": 34896613399,
"index_count": 132,
"index_data": PackedByteArray("GAAZAAIAGAADABkAGgAbABwAGgAdABsAHgAHAAgAHgAQAAcAHwAgACEAHwAiACAAEQAGACMAEQAPAAYAJAAWACUAJgAnAAwAKAApACoADQAKACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOAA7ADkACQA8AD0ACQASADwAPgA/AEAAPgBBAD8AQgBDAEQAQgBFAEMABAAUABUABAATABQACwBGAEcACwBIAEYASQBKAEsASQBMAEoATQBOAE8ATQBQAE4AUQBSAFMAUQBUAFIAVQBWAFcAVQBYAFYAFwBZAAAAFwAFAFkADgBaAAEADgBbAFoAXABdAF4AXABfAF0A"),
"lods": [0.100898, PackedByteArray("AAABAAIADgACAAEAAAADAAEADwAAAAIADwACAAYABgACABAAAAAPAAQABgAQAAcABgAHAAgAEQAPAAYAEQAGAAoACwAKAAYAEgARAAoAEgAKAAwADAAKAA0ACQASAAwABAATABQABAAUABUAFQAAAAQAFQAUABYAFQAXAAAAFQAWABcAFwAFAAAAFwAWAAUA"), 0.588343, PackedByteArray("AAABAAIAAAADAAEABAAAAAIABQAAAAQABAACAAYABgACAAcABgAHAAgACQAEAAYACQAGAAoACwAKAAYACQAKAAwADAAKAA0A")],
"material": SubResource("StandardMaterial3D_i3sml"),
"name": "Material",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 96,
"vertex_data": PackedByteArray("ZeYAAGXm/5+ZGf//Zeb8xWXmZeb///+/mRmZGf///79l5gAAmRn/35kZmRn///+fZeZl5gAA//+ZGf//Zeb//5kZ//+ZGf//mRmZGf///MUAAGXmmRlA3JkZ//+ZGarpmRn//2XmlrGZGf//mRlA3GXm//9l5vzFZeaZGQAA//9l5v//Zeb//5kZmRkAAP//AACZGWXm/MVl5pkZAAD/35kZmRkAAP/fmRkAAJkZ/98AAJkZZeaWsZkZAABl5v+fZeaZGf///7+ZGWXm////v///mRmZGVTV//9l5mXmVNX//2XmmRlU1f//mRll5lTVZeb//5kZ//8AAJkZZeZU1QAAZeaZGVTVAABl5mXmVNUAAJkZmRlU1ZkZZeYAAP//mRkAAGXmlrGZGZkZ//+WsZkZZeb//5axAABl5mXmlrGZGQAAmRlA3JkZmRkAAEDcAACZGZkZQNyZGWXmAABA3GXmAABl5paxZeaZGf//lrH//5kZZeaWsWXm//9l5krA//9l5mXmSsBl5mXm//9KwGXmAACZGUDc//+ZGZkZQNxl5pkZAABA3GXm//+ZGRr7ZeZl5gAAGvv//2XmmRka+5kZAACZGfzFAACZGWXm/MWZGQAAZeb8xQAAmRmZGfzFAABl5mXm/MWZGWXm///8xZkZ//9l5vzFAABl5pkZ/MWZGf//mRn8xQAAZeZl5vzFmRll5gAAqukAAJkZmRmq6ZkZmRkAAKrpAABl5pkZqull5mXmAACq6WXm//+ZGarpmRll5gAAqun//2XmmRmq6WXmmRkAAKrp//+ZGZkZqull5mXmAACq6WXmAABl5vzF//+ZGZkZ/MVl5gAAmRn8xf//mRll5vzFZeb//5kZqun//2XmZeaq6WXm//9l5qrp//9l5pkZqull5mXm///8xf//mRll5vzFZeaZGf///MX//2XmZeb8xWXmmRn///+fmRll5v///MVl5mXm///8xZkZAACZGf+/ZeYAAGXm/79l5gAAmRn/v5kZAABl5v+/AAD/f//i/xz//////////wAA/38AAP9//7//v/9//7//f/+//+L/4nHfZ7EEtQS1DegxxnHfZ7H/4v8c/7//v/9//7//v/+//+L/4gAA/38AAP9/AAD/fzJG8JcAAP9///////////+qKqoqqiqqKqoqqiqqKqoq/3//v1TVVNVU1VTVVNVU1VTVVNX/v/+/MkbwlzJG8JcN6DHGDegxxmcxjaBnMY2gZzGNoHHfZ7HxF8058RfNOfEXzTnFyEUHxchFB8XIRQeNIJdOjSCXTo0gl04Eta6oBLWuqAS1rqj+Of6c/jn+nP45/pz+Of6c/+L/4v/i/+L/4v25/+L9uf/i/bn/4v25+sr6yvrK+sr6yvrK+sr6ygS1BLUEtQS1BLUEtQQ1BDUENQQ1BDUENQQ1BDX/HAFG/xwBRv8cAUb/HAFGBDX2FQQ19hUENfYVBDX2Ff8c/xz/HP8c/xz/HP8c/xwAAP9//+L/HP/i/xwAAP9/AAD/fwAA/38AAP9/")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_7d2fd")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cre2v"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cre2v"]
@@ -101,6 +62,9 @@ _surfaces = [{
blend_shape_mode = 0 blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_eow34") shadow_mesh = SubResource("ArrayMesh_eow34")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_qq11w"]
data = PackedVector3Array(-1, -1, 1, -1, 1, -1, -1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1, -1, -1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1, 1, 1, -1, 1, -1, -1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, -1, 1, 1, 1, 1, 1, -1, 1, -1, 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, -1, 1, 1, -1, -1, -1, 1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, 1, -1, 1, -1, 1, 1, -1, 1, 1, 1, -1, 1, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mfp1l"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mfp1l"]
[sub_resource type="ArrayMesh" id="ArrayMesh_rwltu"] [sub_resource type="ArrayMesh" id="ArrayMesh_rwltu"]
@@ -242,17 +206,15 @@ shadow_mesh = SubResource("ArrayMesh_ib0jm")
[node name="WorldEnvironment" type="WorldEnvironment" parent="."] [node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_vab8d") environment = SubResource("Environment_vab8d")
[node name="Test1" type="Node3D" parent="."] [node name="StaticBody3D" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.196, 7.041, 1.942)
collision_layer = 128
collision_mask = 128
[node name="Cube" type="MeshInstance3D" parent="Test1"] [node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) shape = SubResource("BoxShape3D_qq11w")
material_override = ExtResource("1_8lor2")
mesh = SubResource("ArrayMesh_ipilw") [node name="Test1" type="Node3D" parent="."]
skeleton = NodePath("")
metadata/extras = {
"poliigon_props": {},
"rr_curve_obj": {}
}
[node name="Cube_001" type="MeshInstance3D" parent="Test1"] [node name="Cube_001" type="MeshInstance3D" parent="Test1"]
transform = Transform3D(5, 0, 0, 0, 50, 0, 0, 0, 5, 0, -50, 0) transform = Transform3D(5, 0, 0, 0, 50, 0, 0, 0, 5, 0, -50, 0)
@@ -264,6 +226,11 @@ metadata/extras = {
"rr_curve_obj": {} "rr_curve_obj": {}
} }
[node name="StaticBody3D" type="StaticBody3D" parent="Test1/Cube_001"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Test1/Cube_001/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_qq11w")
[node name="Cube_002" type="MeshInstance3D" parent="Test1"] [node name="Cube_002" type="MeshInstance3D" parent="Test1"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.85093, 0.0576663, 4.81909) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.85093, 0.0576663, 4.81909)
material_override = ExtResource("1_8lor2") material_override = ExtResource("1_8lor2")
@@ -304,9 +271,9 @@ metadata/extras = {
"rr_curve_obj": {} "rr_curve_obj": {}
} }
[node name="Camera3D" type="Camera3D" parent="."] [node name="Camera3D" parent="." node_paths=PackedStringArray("player") instance=ExtResource("2_qq11w")]
transform = Transform3D(1, 0, 0, 0, 0.25038, 0.968148, 0, -0.968148, 0.25038, 0.196, 7.041, 1.942) transform = Transform3D(1, 0, 0, 0, 0.25038, 0.968148, 0, -0.968148, 0.25038, 0.196, 7.041, 1.942)
fov = 80.0 player = NodePath("../Player")
[node name="OmniLight3D" type="OmniLight3D" parent="."] [node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.66639, 0.974749, -3.73532) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.66639, 0.974749, -3.73532)
@@ -325,3 +292,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.26995, 0.974748, 4.40131)
light_color = Color(0.833261, 0.5957, 0.32611, 1) light_color = Color(0.833261, 0.5957, 0.32611, 1)
[node name="PostProcessing" parent="." instance=ExtResource("2_vab8d")] [node name="PostProcessing" parent="." instance=ExtResource("2_vab8d")]
[node name="Player" parent="." instance=ExtResource("3_hfnh2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0717504, 0.311536, 0.0210209)

61
Scripts/mouse_pos.gd Normal file
View File

@@ -0,0 +1,61 @@
# GLOBAL SCRIPT. ACCESS via RaycastSystem.foo()
# Raycast queries are defined here. All other modules can use it.
extends Node3D
const RAY_LENGTH := 1000
"""
Uses default collision_mask. But can be overrided for custom collision
mask/layers.
Output format:
output_dict = {
"collider": None, # The colliding object (if any)
"collider_id": None, # The colliding object's ID (if any)
"normal": [0, 0, 0], # The surface normal at the intersection point
"position": [0, 0, 0], # The intersection point
"face_index": -1, # The face index at the intersection point
"rid": None, # The intersecting object's RID
"shape": None # The shape index of the colliding shape
}
"""
# Returns raycast result after it hits an object in the world.
# @return Dictionary or null
func _do_raycast_on_mouse_position(collision_mask: int = 0b00000000_00000000_00000000_00000001):
# Raycast related code
var space_state = get_world_3d().direct_space_state
var cam = get_viewport().get_camera_3d()
var mousepos = get_viewport().get_mouse_position()
var origin = cam.project_ray_origin(mousepos)
var end = origin + cam.project_ray_normal(mousepos) * RAY_LENGTH
var query = PhysicsRayQueryParameters3D.create(origin, end)
query.collide_with_areas = true
query.collision_mask = collision_mask
var result = space_state.intersect_ray(query) # raycast result
return result
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# API below:
# Gets ray-cast hit position from camera to world.
# @return Vector3 or null
func get_mouse_world_position(collision_mask: int = 0b00000000_00000000_00000000_00000001):
var raycast_result = _do_raycast_on_mouse_position(collision_mask)
if raycast_result:
return raycast_result.position
return null
# Gets ray-cast hit object from camera to world.
# @return Object or null
func get_raycast_hit_object(collision_mask: int = 0b00000000_00000000_00000000_00000001):
var raycast_result = _do_raycast_on_mouse_position(collision_mask)
if raycast_result:
return raycast_result.collider
return null

1
Scripts/mouse_pos.gd.uid Normal file
View File

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

34
Scripts/player.gd Normal file
View File

@@ -0,0 +1,34 @@
extends CharacterBody3D
class_name Player
var input_dir
@onready var body: MeshInstance3D = $Body
const MOVE_SPEED = 10.0
const MOVE_TRANSITION_SPEED = 7.0
func _physics_process(delta: float) -> void:
if is_on_floor():
standard_movement(delta)
body_look_at_mouse()
apply_gravity(delta)
move_and_slide()
func body_look_at_mouse():
var mouse_raycast = MousePos.get_mouse_world_position()
if mouse_raycast != null:
body.look_at(Vector3(mouse_raycast.x,body.global_position.y,mouse_raycast.y),Vector3.UP)
func apply_gravity(delta):
if !is_on_floor():
velocity.y -= 9.8 * delta
func standard_movement(delta):
input_dir = Input.get_vector("move_left", "move_right", "move_forward", "move_backward")
if input_dir != null:
velocity.x = lerp(velocity.x, input_dir.x * MOVE_SPEED,delta * MOVE_TRANSITION_SPEED)
velocity.z = lerp(velocity.z, input_dir.y * MOVE_SPEED,delta * MOVE_TRANSITION_SPEED)

1
Scripts/player.gd.uid Normal file
View File

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

16
Scripts/player_camera.gd Normal file
View File

@@ -0,0 +1,16 @@
extends Camera3D
class_name PlayerCamera
@export var player : Player
const CAM_MOVE_SPEED = 5
func _physics_process(delta: float) -> void:
follow_player(delta)
func follow_player(delta):
var player_pos = player.global_position
global_position.x = lerp(global_position.x,player_pos.x,delta * CAM_MOVE_SPEED)
global_position.z = lerp(global_position.z,player_pos.z,delta * CAM_MOVE_SPEED)

View File

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

View File

@@ -11,5 +11,41 @@ config_version=5
[application] [application]
config/name="Daily Dungeon" config/name="Daily Dungeon"
run/main_scene="uid://dbqyyunvx6fdj"
config/features=PackedStringArray("4.4", "GL Compatibility") config/features=PackedStringArray("4.4", "GL Compatibility")
config/icon="res://icon.svg" config/icon="res://icon.svg"
[autoload]
MousePos="*res://Scripts/mouse_pos.gd"
[display]
window/size/mode=3
[input]
move_left={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
]
}
move_right={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
]
}
move_forward={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
]
}
move_backward={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
]
}
[layer_names]
3d_physics/layer_8="MouseTable"