]> Untitled Git - mushroom-game.git/commitdiff
Added test world, player, and mushroom
authorClifton Palmer <clifton.james.palmer@protonmail.com>
Sun, 27 Oct 2024 12:47:47 +0000 (14:47 +0200)
committerClifton Palmer <clifton.james.palmer@protonmail.com>
Sun, 27 Oct 2024 14:58:20 +0000 (16:58 +0200)
14 files changed:
.gitignore
mushroom/model/golden-chanterelle.blend [new file with mode: 0644]
mushroom/model/golden-chanterelle.glb [new file with mode: 0644]
mushroom/model/golden-chanterelle.glb.import [new file with mode: 0644]
mushroom/mushroom.gd [new file with mode: 0644]
mushroom/mushroom.tscn [new file with mode: 0644]
player/model/player.blend [new file with mode: 0644]
player/model/player.glb [new file with mode: 0644]
player/model/player.glb.import [new file with mode: 0644]
player/player.gd [new file with mode: 0644]
player/player.tscn [new file with mode: 0644]
project.godot
world.gd [new file with mode: 0644]
world.tscn [new file with mode: 0644]

index 0af181cfb5442f01fdce3df056639e861f574a84..f25660fae4b5fa60577d83966202e9f805a5bd0f 100644 (file)
@@ -1,3 +1,6 @@
 # Godot 4+ specific ignores
 .godot/
 /android/
 # Godot 4+ specific ignores
 .godot/
 /android/
+
+# blender
+*.blend1
diff --git a/mushroom/model/golden-chanterelle.blend b/mushroom/model/golden-chanterelle.blend
new file mode 100644 (file)
index 0000000..a5e3436
Binary files /dev/null and b/mushroom/model/golden-chanterelle.blend differ
diff --git a/mushroom/model/golden-chanterelle.glb b/mushroom/model/golden-chanterelle.glb
new file mode 100644 (file)
index 0000000..a3a0ba8
Binary files /dev/null and b/mushroom/model/golden-chanterelle.glb differ
diff --git a/mushroom/model/golden-chanterelle.glb.import b/mushroom/model/golden-chanterelle.glb.import
new file mode 100644 (file)
index 0000000..00e9ce5
--- /dev/null
@@ -0,0 +1,36 @@
+[remap]
+
+importer="scene"
+importer_version=1
+type="PackedScene"
+uid="uid://b1kwwyctl2bug"
+path="res://.godot/imported/golden-chanterelle.glb-0b1a4a6e99402837f15909fdcbbaa1cc.scn"
+
+[deps]
+
+source_file="res://mushroom/model/golden-chanterelle.glb"
+dest_files=["res://.godot/imported/golden-chanterelle.glb-0b1a4a6e99402837f15909fdcbbaa1cc.scn"]
+
+[params]
+
+nodes/root_type=""
+nodes/root_name=""
+nodes/apply_root_scale=true
+nodes/root_scale=1.0
+nodes/import_as_skeleton_bones=false
+meshes/ensure_tangents=true
+meshes/generate_lods=true
+meshes/create_shadow_meshes=true
+meshes/light_baking=1
+meshes/lightmap_texel_size=0.2
+meshes/force_disable_compression=false
+skins/use_named_skins=true
+animation/import=true
+animation/fps=30
+animation/trimming=false
+animation/remove_immutable_tracks=true
+animation/import_rest_as_RESET=false
+import_script/path=""
+_subresources={}
+gltf/naming_version=1
+gltf/embedded_image_handling=1
diff --git a/mushroom/mushroom.gd b/mushroom/mushroom.gd
new file mode 100644 (file)
index 0000000..a0100a2
--- /dev/null
@@ -0,0 +1,21 @@
+extends Node3D
+
+signal picked
+
+
+# Called when the node enters the scene tree for the first time.
+func _ready() -> void:
+       pass # Replace with function body.
+
+
+# Called every frame. 'delta' is the elapsed time since the previous frame.
+func _process(_delta: float) -> void:
+       pass
+
+
+func _on_area_3d_area_entered(area: Area3D) -> void:
+       if(area.is_in_group("player")):
+               print("Player picked a mushroom!")
+               hide()
+               picked.emit()
+               $Area3D/CollisionShape3D.set_deferred("disabled", true)
diff --git a/mushroom/mushroom.tscn b/mushroom/mushroom.tscn
new file mode 100644 (file)
index 0000000..a196a88
--- /dev/null
@@ -0,0 +1,20 @@
+[gd_scene load_steps=4 format=3 uid="uid://csuyt22r71oxl"]
+
+[ext_resource type="PackedScene" uid="uid://b1kwwyctl2bug" path="res://mushroom/model/golden-chanterelle.glb" id="1_abaxu"]
+[ext_resource type="Script" path="res://mushroom/mushroom.gd" id="1_blb61"]
+
+[sub_resource type="SphereShape3D" id="SphereShape3D_5dm4s"]
+radius = 0.191568
+
+[node name="mushroom" type="Node3D"]
+script = ExtResource("1_blb61")
+
+[node name="golden-chanterelle" parent="." instance=ExtResource("1_abaxu")]
+
+[node name="Area3D" type="Area3D" parent="." groups=["pickable"]]
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.120821, 0)
+shape = SubResource("SphereShape3D_5dm4s")
+
+[connection signal="area_entered" from="Area3D" to="." method="_on_area_3d_area_entered"]
diff --git a/player/model/player.blend b/player/model/player.blend
new file mode 100644 (file)
index 0000000..d81544f
Binary files /dev/null and b/player/model/player.blend differ
diff --git a/player/model/player.glb b/player/model/player.glb
new file mode 100644 (file)
index 0000000..f497a6a
Binary files /dev/null and b/player/model/player.glb differ
diff --git a/player/model/player.glb.import b/player/model/player.glb.import
new file mode 100644 (file)
index 0000000..c7a9423
--- /dev/null
@@ -0,0 +1,36 @@
+[remap]
+
+importer="scene"
+importer_version=1
+type="PackedScene"
+uid="uid://cu45deogn0ahs"
+path="res://.godot/imported/player.glb-4fab3988dc7fd5b74f5ba5057da16803.scn"
+
+[deps]
+
+source_file="res://player/model/player.glb"
+dest_files=["res://.godot/imported/player.glb-4fab3988dc7fd5b74f5ba5057da16803.scn"]
+
+[params]
+
+nodes/root_type=""
+nodes/root_name=""
+nodes/apply_root_scale=true
+nodes/root_scale=1.0
+nodes/import_as_skeleton_bones=false
+meshes/ensure_tangents=true
+meshes/generate_lods=true
+meshes/create_shadow_meshes=true
+meshes/light_baking=1
+meshes/lightmap_texel_size=0.2
+meshes/force_disable_compression=false
+skins/use_named_skins=true
+animation/import=true
+animation/fps=30
+animation/trimming=false
+animation/remove_immutable_tracks=true
+animation/import_rest_as_RESET=false
+import_script/path=""
+_subresources={}
+gltf/naming_version=1
+gltf/embedded_image_handling=1
diff --git a/player/player.gd b/player/player.gd
new file mode 100644 (file)
index 0000000..fdaf988
--- /dev/null
@@ -0,0 +1,36 @@
+extends CharacterBody3D
+
+
+const SPEED = 5.0
+const CAMERA_ROTATE_RATE = PI / 12
+
+
+# rotate camera
+func _unhandled_input(event: InputEvent) -> void:
+       if event.is_action("camera-rotate-left"):
+               $cameraPivot.rotate_y(CAMERA_ROTATE_RATE)
+       elif event.is_action("camera-rotate-right"):
+               $cameraPivot.rotate_y(-CAMERA_ROTATE_RATE)
+
+
+func _physics_process(delta: float) -> void:
+       # Add the gravity.
+       if not is_on_floor():
+               velocity += get_gravity() * delta
+
+       # Get the input direction and handle the movement/deceleration.
+       var input_dir := Input.get_vector("player-turn-left", "player-turn-right", "player-forward", "player-backward")
+       var direction := (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
+       direction = direction.rotated(Vector3.UP, $cameraPivot.rotation.y)
+       
+       if direction:
+               velocity.x = direction.x * SPEED
+               velocity.z = direction.z * SPEED
+               
+               # rotate the character to face movement direction
+               $player.rotation.y = lerp_angle($player.rotation.y, atan2(-velocity.x, -velocity.z), 0.15)
+       else:
+               velocity.x = move_toward(velocity.x, 0, SPEED)
+               velocity.z = move_toward(velocity.z, 0, SPEED)
+
+       move_and_slide()
diff --git a/player/player.tscn b/player/player.tscn
new file mode 100644 (file)
index 0000000..a10014c
--- /dev/null
@@ -0,0 +1,33 @@
+[gd_scene load_steps=5 format=3 uid="uid://8acx55kbkhkg"]
+
+[ext_resource type="Script" path="res://player/player.gd" id="1_wm6ep"]
+[ext_resource type="PackedScene" uid="uid://cu45deogn0ahs" path="res://player/model/player.glb" id="1_y543y"]
+
+[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_53x73"]
+
+[sub_resource type="SphereShape3D" id="SphereShape3D_evp18"]
+
+[node name="player" type="CharacterBody3D"]
+script = ExtResource("1_wm6ep")
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
+shape = SubResource("CapsuleShape3D_53x73")
+
+[node name="player" parent="." instance=ExtResource("1_y543y")]
+
+[node name="cameraPivot" type="Node3D" parent="."]
+
+[node name="SpringArm3D" type="SpringArm3D" parent="cameraPivot"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)
+spring_length = 3.0
+
+[node name="Camera3D" type="Camera3D" parent="cameraPivot/SpringArm3D"]
+
+[node name="Area3D" type="Area3D" parent="." groups=["player"]]
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.337483, 0)
+shape = SubResource("SphereShape3D_evp18")
+
+[connection signal="area_entered" from="Area3D" to="." method="_on_area_3d_area_entered"]
index 1690807ae922ef705a5d7b81ddcce68e851a8985..9624c605a8782536f876f6f56b5abe762abc7e7a 100644 (file)
@@ -11,5 +11,53 @@ config_version=5
 [application]
 
 config/name="mushroom-hunting"
 [application]
 
 config/name="mushroom-hunting"
+run/main_scene="res://world.tscn"
 config/features=PackedStringArray("4.3", "Forward Plus")
 config/icon="res://icon.svg"
 config/features=PackedStringArray("4.3", "Forward Plus")
 config/icon="res://icon.svg"
+
+[filesystem]
+
+import/blender/enabled=false
+
+[global_group]
+
+pickable=""
+player=""
+
+[input]
+
+player-forward={
+"deadzone": 0.5,
+"events": [null, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"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":0,"location":0,"echo":false,"script":null)
+]
+}
+player-backward={
+"deadzone": 0.5,
+"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)
+]
+}
+player-turn-left={
+"deadzone": 0.5,
+"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)
+]
+}
+player-turn-right={
+"deadzone": 0.5,
+"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)
+]
+}
+quit-game={
+"deadzone": 0.5,
+"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":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
+]
+}
+camera-rotate-left={
+"deadzone": 0.5,
+"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":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
+]
+}
+camera-rotate-right={
+"deadzone": 0.5,
+"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":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
+]
+}
diff --git a/world.gd b/world.gd
new file mode 100644 (file)
index 0000000..07e281d
--- /dev/null
+++ b/world.gd
@@ -0,0 +1,24 @@
+extends Node3D
+
+func quit_game() -> void:
+       get_tree().quit()
+       
+# Quit the game
+func _unhandled_input(event: InputEvent) -> void:
+       if event.is_action_pressed("quit-game"):
+               quit_game()
+
+
+# Called when the node enters the scene tree for the first time.
+func _ready() -> void:
+       pass # Replace with function body.
+
+
+# Called every frame. 'delta' is the elapsed time since the previous frame.
+func _process(_delta: float) -> void:
+       pass
+
+
+func _on_mushroom_picked() -> void:
+       print("Player picked all mushrooms!")
+       #quit_game()
diff --git a/world.tscn b/world.tscn
new file mode 100644 (file)
index 0000000..d6d9396
--- /dev/null
@@ -0,0 +1,51 @@
+[gd_scene load_steps=9 format=3 uid="uid://k0t26148qmto"]
+
+[ext_resource type="Script" path="res://world.gd" id="1_0q4eg"]
+[ext_resource type="PackedScene" uid="uid://8acx55kbkhkg" path="res://player/player.tscn" id="2_i1nnw"]
+[ext_resource type="PackedScene" uid="uid://csuyt22r71oxl" path="res://mushroom/mushroom.tscn" id="3_cq28e"]
+
+[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_ou57n"]
+sky_horizon_color = Color(0.64625, 0.65575, 0.67075, 1)
+sky_energy_multiplier = 0.3
+ground_horizon_color = Color(0.64625, 0.65575, 0.67075, 1)
+
+[sub_resource type="Sky" id="Sky_ec1ai"]
+sky_material = SubResource("ProceduralSkyMaterial_ou57n")
+
+[sub_resource type="Environment" id="Environment_dvway"]
+background_mode = 2
+sky = SubResource("Sky_ec1ai")
+tonemap_mode = 2
+glow_enabled = true
+
+[sub_resource type="PlaneMesh" id="PlaneMesh_p1m44"]
+size = Vector2(20, 20)
+
+[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_tjuji"]
+data = PackedVector3Array(10, 0, 10, -10, 0, 10, 10, 0, -10, -10, 0, 10, -10, 0, -10, 10, 0, -10)
+
+[node name="World" type="Node3D"]
+script = ExtResource("1_0q4eg")
+
+[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
+environment = SubResource("Environment_dvway")
+
+[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
+transform = Transform3D(-0.866023, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.749999, -0.43301, 0, 0, 0)
+shadow_enabled = true
+
+[node name="ground" type="MeshInstance3D" parent="."]
+mesh = SubResource("PlaneMesh_p1m44")
+
+[node name="StaticBody3D" type="StaticBody3D" parent="ground"]
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="ground/StaticBody3D"]
+shape = SubResource("ConcavePolygonShape3D_tjuji")
+
+[node name="player" parent="." instance=ExtResource("2_i1nnw")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 7.20149)
+
+[node name="mushroom" parent="." instance=ExtResource("3_cq28e")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.09446, -4.76837e-07, -4.56699)
+
+[connection signal="picked" from="mushroom" to="." method="_on_mushroom_picked"]