diff --git a/3D Input/Fertige GLBs/Kopf_Mensch.glb b/3D Input/Fertige GLBs/Kopf_Mensch.glb index 757bc78..0f484a1 100644 Binary files a/3D Input/Fertige GLBs/Kopf_Mensch.glb and b/3D Input/Fertige GLBs/Kopf_Mensch.glb differ diff --git a/3D Input/Fertige GLBs/Kopf_Stier.glb b/3D Input/Fertige GLBs/Kopf_Stier.glb new file mode 100644 index 0000000..88a67c9 Binary files /dev/null and b/3D Input/Fertige GLBs/Kopf_Stier.glb differ diff --git a/3D Input/Flugeltextur.png b/3D Input/Flugeltextur.png new file mode 100644 index 0000000..2217538 Binary files /dev/null and b/3D Input/Flugeltextur.png differ diff --git a/3D Input/Mensch_Kopf.blend b/3D Input/Mensch_Kopf.blend index 0238458..c794403 100644 Binary files a/3D Input/Mensch_Kopf.blend and b/3D Input/Mensch_Kopf.blend differ diff --git a/3D Input/Mensch_Kopf.blend1 b/3D Input/Mensch_Kopf.blend1 index fca2543..5fba680 100644 Binary files a/3D Input/Mensch_Kopf.blend1 and b/3D Input/Mensch_Kopf.blend1 differ diff --git a/3D Input/froschtexture.png.import b/3D Input/froschtexture.png.import index 6af9ff3..196d63b 100644 --- a/3D Input/froschtexture.png.import +++ b/3D Input/froschtexture.png.import @@ -2,33 +2,35 @@ importer="texture" type="StreamTexture" -path="res://.import/froschtexture.png-4981f80e68642c0c23396f3b44826854.stex" +path.s3tc="res://.import/froschtexture.png-4981f80e68642c0c23396f3b44826854.s3tc.stex" +path.etc2="res://.import/froschtexture.png-4981f80e68642c0c23396f3b44826854.etc2.stex" metadata={ -"vram_texture": false +"imported_formats": [ "s3tc", "etc2" ], +"vram_texture": true } [deps] source_file="res://3D Input/froschtexture.png" -dest_files=[ "res://.import/froschtexture.png-4981f80e68642c0c23396f3b44826854.stex" ] +dest_files=[ "res://.import/froschtexture.png-4981f80e68642c0c23396f3b44826854.s3tc.stex", "res://.import/froschtexture.png-4981f80e68642c0c23396f3b44826854.etc2.stex" ] [params] -compress/mode=0 +compress/mode=2 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 -flags/repeat=0 +flags/repeat=true flags/filter=true -flags/mipmaps=false +flags/mipmaps=true flags/anisotropic=false -flags/srgb=2 +flags/srgb=1 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false stream=false size_limit=0 -detect_3d=true +detect_3d=false svg/scale=1.0 diff --git a/3D Input/gorillaarmtexture.png.import b/3D Input/gorillaarmtexture.png.import index f58dc8e..e4bbe87 100644 --- a/3D Input/gorillaarmtexture.png.import +++ b/3D Input/gorillaarmtexture.png.import @@ -2,33 +2,35 @@ importer="texture" type="StreamTexture" -path="res://.import/gorillaarmtexture.png-c64af8f8e427f7cc8fbbb08cb004940b.stex" +path.s3tc="res://.import/gorillaarmtexture.png-c64af8f8e427f7cc8fbbb08cb004940b.s3tc.stex" +path.etc2="res://.import/gorillaarmtexture.png-c64af8f8e427f7cc8fbbb08cb004940b.etc2.stex" metadata={ -"vram_texture": false +"imported_formats": [ "s3tc", "etc2" ], +"vram_texture": true } [deps] source_file="res://3D Input/gorillaarmtexture.png" -dest_files=[ "res://.import/gorillaarmtexture.png-c64af8f8e427f7cc8fbbb08cb004940b.stex" ] +dest_files=[ "res://.import/gorillaarmtexture.png-c64af8f8e427f7cc8fbbb08cb004940b.s3tc.stex", "res://.import/gorillaarmtexture.png-c64af8f8e427f7cc8fbbb08cb004940b.etc2.stex" ] [params] -compress/mode=0 +compress/mode=2 compress/lossy_quality=0.7 compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 -flags/repeat=0 +flags/repeat=true flags/filter=true -flags/mipmaps=false +flags/mipmaps=true flags/anisotropic=false -flags/srgb=2 +flags/srgb=1 process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false stream=false size_limit=0 -detect_3d=true +detect_3d=false svg/scale=1.0 diff --git a/3D Input/stier_kopf unwrapped.blend b/3D Input/stier_kopf unwrapped.blend new file mode 100644 index 0000000..fe69f1b Binary files /dev/null and b/3D Input/stier_kopf unwrapped.blend differ diff --git a/3D Input/stier_kopf unwrapped.blend1 b/3D Input/stier_kopf unwrapped.blend1 new file mode 100644 index 0000000..4b32c29 Binary files /dev/null and b/3D Input/stier_kopf unwrapped.blend1 differ diff --git a/3D Input/stiertextur.png b/3D Input/stiertextur.png new file mode 100644 index 0000000..8e3f43c Binary files /dev/null and b/3D Input/stiertextur.png differ diff --git a/3D Input/vogel_flügel unwrapped.blend b/3D Input/vogel_flügel unwrapped.blend index 3b552f9..b44d6dd 100644 Binary files a/3D Input/vogel_flügel unwrapped.blend and b/3D Input/vogel_flügel unwrapped.blend differ diff --git a/3D Input/vogel_flügel unwrapped.blend1 b/3D Input/vogel_flügel unwrapped.blend1 index bd02429..73c85a1 100644 Binary files a/3D Input/vogel_flügel unwrapped.blend1 and b/3D Input/vogel_flügel unwrapped.blend1 differ diff --git a/BodyConfig/bodyBuilderMenu.tscn b/BodyConfig/bodyBuilderMenu.tscn index 085ecae..c71572d 100644 --- a/BodyConfig/bodyBuilderMenu.tscn +++ b/BodyConfig/bodyBuilderMenu.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=5 format=2] [ext_resource path="res://BodyParts/BodyBase/BodyBase.tscn" type="PackedScene" id=1] [ext_resource path="res://BodyConfig/bodyBuildingScript.gd" type="Script" id=2] [ext_resource path="res://BodyConfig/LoadBodyParts.gd" type="Script" id=3] +[ext_resource path="res://Ingame/Arena.tscn" type="PackedScene" id=4] [node name="Body Builder Menu" type="Spatial"] script = ExtResource( 2 ) @@ -11,6 +12,7 @@ cameraPath = NodePath("GUI/HBoxC/ViewportContainer/Viewport/Camera") rayCastPath = NodePath("GUI/HBoxC/ViewportContainer/Viewport/MouseLook") viewPortPath = NodePath("GUI/HBoxC/ViewportContainer/Viewport") playerNumPath = NodePath("PlayerCountLabel") +costProgressPath = NodePath("GUI/HBoxC/VBoxC/HBoxContainer/ProgressBar") [node name="GUI" type="MarginContainer" parent="."] anchor_right = 1.0 @@ -33,15 +35,31 @@ margin_bottom = 600.0 rect_min_size = Vector2( 300, 500 ) script = ExtResource( 3 ) -[node name="Start" type="Button" parent="GUI/HBoxC/VBoxC"] +[node name="HBoxContainer" type="HBoxContainer" parent="GUI/HBoxC/VBoxC"] margin_right = 300.0 -margin_bottom = 20.0 +margin_bottom = 14.0 + +[node name="Label" type="Label" parent="GUI/HBoxC/VBoxC/HBoxContainer"] +margin_right = 36.0 +margin_bottom = 14.0 +text = "Cost: " + +[node name="ProgressBar" type="ProgressBar" parent="GUI/HBoxC/VBoxC/HBoxContainer"] +margin_left = 40.0 +margin_right = 240.0 +margin_bottom = 14.0 +rect_min_size = Vector2( 200, 0 ) + +[node name="Start" type="Button" parent="GUI/HBoxC/VBoxC"] +margin_top = 18.0 +margin_right = 300.0 +margin_bottom = 38.0 text = "Start Game" [node name="Delete" type="Button" parent="GUI/HBoxC/VBoxC"] -margin_top = 24.0 +margin_top = 42.0 margin_right = 300.0 -margin_bottom = 44.0 +margin_bottom = 62.0 text = "Delete" [node name="ViewportContainer" type="ViewportContainer" parent="GUI/HBoxC"] @@ -79,4 +97,7 @@ __meta__ = { } [node name="Torso" parent="." instance=ExtResource( 1 )] + +[node name="Arena" parent="." instance=ExtResource( 4 )] +transform = Transform( 1, 0, 0, 0, 0.707107, -0.707107, 0, 0.707107, 0.707107, 8, -9.91555, -6.62132 ) [connection signal="pressed" from="GUI/HBoxC/VBoxC/Start" to="." method="_on_Start_pressed"] diff --git a/BodyConfig/bodyBuildingScript.gd b/BodyConfig/bodyBuildingScript.gd index 9b0de90..74c1315 100644 --- a/BodyConfig/bodyBuildingScript.gd +++ b/BodyConfig/bodyBuildingScript.gd @@ -5,6 +5,7 @@ export(NodePath) var cameraPath export(NodePath) var rayCastPath export(NodePath) var viewPortPath export(NodePath) var playerNumPath +export(NodePath) var costProgressPath const ROT_MOD = 500 const ROT_DECLINE = 0.1 @@ -16,6 +17,7 @@ var _rayCast : RayCast var _torso : RigidBody var _viewport : Viewport var _playerNum : Label +var _costProgress : ProgressBar var _velx = 0 var _vely = 0 @@ -33,6 +35,7 @@ func _ready(): _rayCast = get_node(rayCastPath) as RayCast _viewport = get_node(viewPortPath) as Viewport _playerNum = get_node(playerNumPath) as Label + _costProgress = get_node(costProgressPath) as ProgressBar # Keybinds of first player _torso.get_node("DownFrontLeft").key = KEY_D @@ -134,15 +137,26 @@ func body_part_chosen(params): #no _attachment_point if _attachment_point != null: var limb = _attachment_point.get_node("Limb") + var new_part = BodyPartLoader.bodyparts[params].instance() - #adding only possible if no first child - #if limb.get_child(0) == null: - # limb.add_child(BodyPartLoader.bodyparts[params].instance()) + # Check if we have enough cost points left + var current_cost = 0 - #if spot already taken, DELETE + # If we already have something in that slot, we can place + # the new one if the total cost WITHOUT that existing part + # is low enough if limb.get_child(0) != null: - delete_body_part() - limb.add_child(BodyPartLoader.bodyparts[params].instance()) + current_cost += limb.get_child(0).cost + + if _costProgress.value + new_part.cost - current_cost <= _costProgress.max_value: + #if spot already taken, DELETE + if limb.get_child(0) != null: + delete_body_part() + + limb.add_child(new_part) + + # Add the cost of that part + _costProgress.value += new_part.cost func make_it_shine(highlight : bool): @@ -154,8 +168,10 @@ func delete_body_part(): if _attachment_point != null: var body_part = _attachment_point.get_node("Limb").get_child(0) if body_part != null: + _costProgress.value -= body_part.cost body_part.queue_free() func _on_Start_pressed(): + make_it_shine(false) emit_signal("start_fight", _torso) diff --git a/BodyParts/BodyPart.gd b/BodyParts/BodyPart.gd index ce797ac..3cc7c66 100644 --- a/BodyParts/BodyPart.gd +++ b/BodyParts/BodyPart.gd @@ -9,6 +9,8 @@ onready var physics_shape = get_node("PartCollider") var setup_done = false +export(float) var cost + # Called when the node enters the scene tree for the first time. func _ready() -> void: diff --git a/BodyParts/FrogLeg.gd b/BodyParts/FrogLeg.gd new file mode 100644 index 0000000..66c0e96 --- /dev/null +++ b/BodyParts/FrogLeg.gd @@ -0,0 +1,29 @@ +extends PushingBodyPart + + +onready var anim = get_node("Mesh/AnimationPlayer") + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +func action(): + anim.play("ArmatureAction") + + +func _is_animation_playing(): + return anim.is_playing() + + +func push(body): + # We multiply by 0.1 because we only want it to spin slightly, it should mostly go up + var offset = transform.basis.xform(Vector3.ZERO) #transform.basis.xform(touch_area.global_transform.origin - base.global_transform.origin) * 0.5 + var direction = (base.transform.basis.y - base.transform.basis.z).normalized() * 20.0 + + base.apply_impulse(offset, direction) + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta: float) -> void: +# pass diff --git a/BodyParts/FrogLeg.tscn b/BodyParts/FrogLeg.tscn new file mode 100644 index 0000000..f2f8c9f --- /dev/null +++ b/BodyParts/FrogLeg.tscn @@ -0,0 +1,49 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://BodyParts/PushingBodyPart.tscn" type="PackedScene" id=1] +[ext_resource path="res://BodyParts/FrogLeg.gd" type="Script" id=2] +[ext_resource path="res://3D Input/Fertige GLBs/Bein_Frosch.glb" type="PackedScene" id=3] +[ext_resource path="res://3D Input/froschtexture.png" type="Texture" id=4] + +[sub_resource type="BoxShape" id=2] +extents = Vector3( 0.649825, 2.07811, 1.64282 ) + +[sub_resource type="SphereShape" id=3] +radius = 0.115004 + +[sub_resource type="SpatialMaterial" id=1] +albedo_texture = ExtResource( 4 ) +roughness = 0.3 + +[node name="FrogLeg" instance=ExtResource( 1 )] +transform = Transform( -1, 8.74228e-08, 0, -8.74228e-08, -1, 0, 0, 0, 1, 0, 0, 0 ) +script = ExtResource( 2 ) + +[node name="PartCollider" parent="." index="0"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.21377, -0.911304, -3.94992 ) +shape = SubResource( 2 ) + +[node name="TouchArea" parent="." index="1"] +transform = Transform( 2.2019, -0.624093, -2.57245, 1.35866, 3.13817, 0.40161, 2.27179, -1.27191, 2.25313, 0.307055, -2.49965, -4.98782 ) + +[node name="CollisionShape" type="CollisionShape" parent="TouchArea" index="0"] +shape = SubResource( 3 ) + +[node name="Mesh" parent="." index="2" instance=ExtResource( 3 )] +transform = Transform( -1.13133e-08, 4.2222e-08, 1, 0.965926, 0.258819, 0, -0.258819, 0.965926, -4.37114e-08, 0.734499, -2.94707, -2.68774 ) + +[node name="froschbein" parent="Mesh/Armature/Skeleton" index="0"] +transform = Transform( 1, -1.49012e-08, 0, 0, 1, -5.96046e-08, 0, 2.98023e-08, 1, 0, 0, 0 ) +material/0 = SubResource( 1 ) + +[node name="BoneAttachment" type="BoneAttachment" parent="Mesh/Armature/Skeleton" index="1"] +transform = Transform( -0.207654, -0.97489, 0.0804374, -0.106263, -0.059262, -0.99257, 0.972414, -0.214658, -0.091288, 0.208948, 1.33566, -0.895561 ) +bone_name = "bone_3" + +[node name="RemoteTransform" type="RemoteTransform" parent="Mesh/Armature/Skeleton/BoneAttachment" index="0"] +remote_path = NodePath("../../../../../TouchArea") + +[node name="AnimationPlayer" parent="Mesh" index="2"] +playback_speed = 2.0 + +[editable path="Mesh"] diff --git a/BodyParts/GorillaArm.gd b/BodyParts/GorillaArm.gd new file mode 100644 index 0000000..3413727 --- /dev/null +++ b/BodyParts/GorillaArm.gd @@ -0,0 +1,29 @@ +extends PushingBodyPart + + +onready var anim = get_node("Mesh/AnimationPlayer") + + +func _is_animation_playing(): + return anim.is_playing() + + +func action(): + anim.play("ArmatureAction") + + # Apply a slight impulse here too + var offset = touch_area.global_transform.origin - base.global_transform.origin + var direction = base.transform.basis.y * 2.0 + + base.apply_impulse(offset, direction) + + +func push(body): + var offset = touch_area.global_transform.origin - base.global_transform.origin + var direction = -base.transform.basis.y * 10.0 + + base.apply_impulse(offset, direction) + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta: float) -> void: +# pass diff --git a/BodyParts/GorillaArm.tscn b/BodyParts/GorillaArm.tscn new file mode 100644 index 0000000..dd938a9 --- /dev/null +++ b/BodyParts/GorillaArm.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://BodyParts/PushingBodyPart.tscn" type="PackedScene" id=1] +[ext_resource path="res://BodyParts/GorillaArm.gd" type="Script" id=2] +[ext_resource path="res://3D Input/Fertige GLBs/Arm_Gorilla.glb" type="PackedScene" id=3] +[ext_resource path="res://3D Input/gorillaarmtexture.png" type="Texture" id=4] + +[sub_resource type="BoxShape" id=2] +extents = Vector3( 1.21214, 1, 2.81197 ) + +[sub_resource type="SphereShape" id=3] +radius = 0.175235 + +[sub_resource type="SpatialMaterial" id=1] +albedo_texture = ExtResource( 4 ) + +[node name="GorillaArm" instance=ExtResource( 1 )] +transform = Transform( 1, 0, 0, 0, 0.966025, 0.258448, 0, -0.258448, 0.966025, 0, 0, 0 ) +script = ExtResource( 2 ) + +[node name="PartCollider" parent="." index="0"] +transform = Transform( 1, 0, 0, 0, 0.534515, -0.845159, 0, 0.845159, 0.534515, -0.0701199, -4.33779, -2.5341 ) +shape = SubResource( 2 ) + +[node name="TouchArea" parent="." index="1"] +transform = Transform( 0.00565114, -1.25635, 4.34486, 2.47947, -3.63292, -1.05371, 3.78264, 2.38321, 0.684203, -0.142621, -4.9139, -2.02559 ) + +[node name="CollisionShape" type="CollisionShape" parent="TouchArea" index="0"] +shape = SubResource( 3 ) + +[node name="Mesh" parent="." index="2" instance=ExtResource( 3 )] +transform = Transform( -1.74846e-08, 0.4, 0, -0.4, -1.74846e-08, 0, 0, -2.66454e-15, 0.4, -9.43966, -0.0575844, 0.086014 ) + +[node name="Skeleton" parent="Mesh/Armature" index="0"] +bones/14/bound_children = [ NodePath("BoneAttachment") ] + +[node name="Cube" parent="Mesh/Armature/Skeleton" index="0"] +material/0 = SubResource( 1 ) + +[node name="BoneAttachment" type="BoneAttachment" parent="Mesh/Armature/Skeleton" index="1"] +transform = Transform( 0.000982332, 0.274505, -0.961585, -0.54821, 0.80436, 0.229062, 0.83634, 0.526926, 0.151277, -0.00334232, 1.11071, -0.466874 ) +bone_name = "bone_6" + +[node name="RemoteTransform" type="RemoteTransform" parent="Mesh/Armature/Skeleton/BoneAttachment" index="0"] +remote_path = NodePath("../../../../../TouchArea") + +[editable path="Mesh"] diff --git a/BodyParts/HumanArm.gd b/BodyParts/HumanArm.gd index 53c6973..35bbe07 100644 --- a/BodyParts/HumanArm.gd +++ b/BodyParts/HumanArm.gd @@ -4,6 +4,10 @@ extends PushingBodyPart onready var anim = get_node("Mesh/AnimationPlayer") +func _is_animation_playing(): + return anim.is_playing() + + func action(): anim.play("ArmatureAction") diff --git a/BodyParts/HumanArm.tscn b/BodyParts/HumanArm.tscn index 0b5275b..c702328 100644 --- a/BodyParts/HumanArm.tscn +++ b/BodyParts/HumanArm.tscn @@ -13,13 +13,14 @@ radius = 0.125064 [node name="HumanArm" instance=ExtResource( 1 )] transform = Transform( -4.37114e-08, 1, 4.37114e-08, 0, -4.37114e-08, 1, 1, 4.37114e-08, 1.91069e-15, 0, 0, 0 ) script = ExtResource( 2 ) +cost = 10.0 [node name="PartCollider" parent="." index="0"] transform = Transform( 0.796097, 0, -0.605169, 0, 1, -3.55271e-15, 0.605169, 8.35188e-23, 0.796097, -0.894889, 1.42109e-14, -2.6182 ) shape = SubResource( 1 ) [node name="TouchArea" parent="." index="1"] -transform = Transform( -0.114995, 2.15415, 2.55188, -3.31495, -0.382831, 0.173782, 0.404395, -2.52562, 2.15021, -0.0333271, -0.131349, -3.878 ) +transform = Transform( -0.118289, 2.18551, 2.52493, -3.31556, -0.378316, 0.172131, 0.398447, -2.49922, 2.18193, -0.0255739, -0.127111, -3.79535 ) [node name="CollisionShape" type="CollisionShape" parent="TouchArea" index="0"] shape = SubResource( 2 ) @@ -28,7 +29,7 @@ shape = SubResource( 2 ) transform = Transform( 2, 0, 0, 0, 2, 0, 0, 0, 2, -0.357728, -8.51476, 0 ) [node name="BoneAttachment" type="BoneAttachment" parent="Mesh/Armature/Skeleton" index="1"] -transform = Transform( 0.0638506, -0.727912, -0.682691, -0.242273, 0.652315, -0.718184, 0.968104, 0.211254, -0.134703, 0.0541456, 1.16231, 0.134369 ) +transform = Transform( 0.0646207, -0.736312, -0.673549, -0.240426, 0.64359, -0.726627, 0.968514, 0.208894, -0.135439, 0.054756, 1.13784, 0.129916 ) bone_name = "bone_6" [node name="RemoteTransform" type="RemoteTransform" parent="Mesh/Armature/Skeleton/BoneAttachment" index="0"] diff --git a/BodyParts/HumanLeg.gd b/BodyParts/HumanLeg.gd index e292d97..a5a38ef 100644 --- a/BodyParts/HumanLeg.gd +++ b/BodyParts/HumanLeg.gd @@ -9,6 +9,10 @@ func _ready() -> void: pass # Replace with function body. +func _is_animation_playing(): + return anim.is_playing() + + func action(): anim.play("ArmatureAction") diff --git a/BodyParts/HumanLeg.tscn b/BodyParts/HumanLeg.tscn index bfcf73e..3b0e421 100644 --- a/BodyParts/HumanLeg.tscn +++ b/BodyParts/HumanLeg.tscn @@ -6,7 +6,7 @@ [ext_resource path="res://3D Input/beinimage.png" type="Texture" id=4] [sub_resource type="BoxShape" id=1] -extents = Vector3( 0.666, 2.378, 1.555 ) +extents = Vector3( 0.666, 2.41488, 1.555 ) [sub_resource type="SphereShape" id=2] radius = 0.108468 @@ -17,13 +17,14 @@ albedo_texture = ExtResource( 4 ) [node name="HumanLeg" instance=ExtResource( 1 )] transform = Transform( 1, 8.74228e-08, -3.82137e-15, 0, -4.37114e-08, -1, -8.74228e-08, 1, -4.37114e-08, 0, 0, 0 ) script = ExtResource( 2 ) +cost = 20.0 [node name="PartCollider" parent="." index="0"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -3.37252, -0.326758 ) shape = SubResource( 1 ) [node name="TouchArea" parent="." index="1"] -transform = Transform( 3.95755, 9.02389e-13, -4.54747e-13, -1.36424e-12, -0.554944, -3.91846, 1.57933e-13, 3.91846, -0.554943, -1.33582e-12, -5.30189, -1.33664 ) +transform = Transform( 3.95756, 9.05942e-13, -4.54747e-13, -1.33582e-12, -0.554944, -3.91846, 1.57933e-13, 3.91846, -0.554943, -1.3074e-12, -5.3019, -1.33665 ) [node name="CollisionShape" type="CollisionShape" parent="TouchArea" index="0"] shape = SubResource( 2 ) @@ -34,6 +35,9 @@ transform = Transform( 2, 0, 0, 0, 2, 0, 0, 0, 2, -2.84217e-14, -4.37555, -0.049 [node name="Armature" parent="Mesh" index="2"] transform = Transform( 1.97878, 0, 0, 0, -1.97636, 0.0978612, 8.47033e-22, -0.0978612, -1.97636, -1.33227e-14, 2.34477, 0.0119585 ) +[node name="Skeleton" parent="Mesh/Armature" index="0"] +bones/2/bound_children = [ NodePath("BoneAttachment") ] + [node name="Cube" parent="Mesh/Armature/Skeleton" index="0"] transform = Transform( 1, 0, -8.88178e-16, -1.42109e-14, 1, -2.23517e-08, 4.44089e-16, 2.23517e-08, 1, 0, 0, 0 ) material/0 = SubResource( 3 ) diff --git a/BodyParts/PushingBodyPart.gd b/BodyParts/PushingBodyPart.gd index 11e5615..32c6df6 100644 --- a/BodyParts/PushingBodyPart.gd +++ b/BodyParts/PushingBodyPart.gd @@ -11,8 +11,13 @@ func _ready() -> void: touch_area.connect("body_entered", self, "_on_touch_area_entered") +# Override in derived classes! +func _is_animation_playing(): + return true + + func _on_touch_area_entered(body): - if body.name != base.name: + if body.name != base.name and _is_animation_playing(): if body.is_in_group("Terrain"): push(body) elif body.is_in_group("Player"): diff --git a/Controllers/GameStateController.gd b/Controllers/GameStateController.gd index 4b193df..4f84b75 100644 --- a/Controllers/GameStateController.gd +++ b/Controllers/GameStateController.gd @@ -87,6 +87,9 @@ func _switch_to_fighting(torso): _fighting_scene.add_child(torso) torso.on_ingame() + + _body_count = 0 + _bodies.clear() func _switch_to_body_build(): diff --git a/Global/BodyPartLoader.gd b/Global/BodyPartLoader.gd index d4667a6..da58f9d 100644 --- a/Global/BodyPartLoader.gd +++ b/Global/BodyPartLoader.gd @@ -6,3 +6,5 @@ var bodyparts : Dictionary func _ready(): bodyparts["Human Arm"] = load("res://BodyParts/HumanArm.tscn") bodyparts["Human Leg"] = load("res://BodyParts/HumanLeg.tscn") + bodyparts["Frog Leg"] = load("res://BodyParts/FrogLeg.tscn") + bodyparts["Gorilla Arm"] = load("res://BodyParts/GorillaArm.tscn") diff --git a/Ingame/Arena.tscn b/Ingame/Arena.tscn index 941ab90..d24c9ae 100644 --- a/Ingame/Arena.tscn +++ b/Ingame/Arena.tscn @@ -2,11 +2,9 @@ [ext_resource path="res://Ingame/Level/Torch.tscn" type="PackedScene" id=1] [ext_resource path="res://Ingame/Level/Ground.tscn" type="PackedScene" id=2] +[ext_resource path="res://default_env.tres" type="Environment" id=3] [ext_resource path="res://Ingame/Level/Fence.tscn" type="PackedScene" id=5] -[sub_resource type="Environment" id=1] -ambient_light_color = Color( 0.203922, 0.231373, 0.329412, 1 ) - [sub_resource type="Curve3D" id=2] _data = { "points": PoolVector3Array( -6.18582, 0, 7.84923, 6.18582, 0, -7.84923, -49.9513, 0, -34.3585, -4.51454, 0, 0.679321, 4.51454, 0, -0.679321, -15.3927, 0, -53.766, -21.9094, 0, -9.41343, 21.9094, 0, 9.41343, 23.1226, 0, -50.5878, -3.51591, 0, -8.89224, 3.51591, 0, 8.89224, 48.9412, 0, -26.3448, -0.144619, 0, -5.61391, 0.144619, 0, 5.61391, 60.7732, 0, 13.6973, 4.99704, -4.57764e-05, -11.0807, -4.99704, 4.57764e-05, 11.0807, 54.4575, 0, 49.3261, 10.0432, 0, -5.64291, -10.0432, 0, 5.64291, 32.3244, 0, 71.386, 10.2301, 0, -1.21242, -10.2301, 0, 1.21242, 2.64864, -1.52588e-05, 80.1473, 8.65666, 0, 3.83833, -8.65666, 0, -3.83833, -24.225, 0, 77.5418, 6.10191, 0, 6.62698, -6.10191, 0, -6.62698, -47.3545, 0, 62.2559, 2.38824, 0, 9.77866, -2.38824, 0, -9.77866, -62.2404, 0, 29.8337, -1.39743, 0, 9.2999, 1.39743, 0, -9.2999, -65.2092, 0, -9.54412, 0, 0, 0, 0, 0, 0, -49.9513, 0, -34.3585 ), @@ -34,7 +32,7 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 52.7943, 0, 76.6803 ) transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.293457, 0, 5.53332 ) [node name="WorldEnvironment" type="WorldEnvironment" parent="."] -environment = SubResource( 1 ) +environment = ExtResource( 3 ) [node name="ground" parent="." instance=ExtResource( 2 )] diff --git a/Ingame/CameraFocus.gd b/Ingame/CameraFocus.gd index 4fe5278..4b9b26a 100644 --- a/Ingame/CameraFocus.gd +++ b/Ingame/CameraFocus.gd @@ -2,6 +2,18 @@ extends Spatial onready var camera = get_node("Camera") +const DISTANCE_MOD = 0.2 +const FOV_MOD = 0.2 + +var _look_at_vec = Vector3(0, 0, -1) +var _x_axis = Vector3(1, 0, 0) + +func _ready(): + var cam_rot = camera.rotation_degrees + _look_at_vec = _look_at_vec.rotated(Vector3(0, 1, 0), cam_rot.y * PI/180) + _x_axis = _x_axis.rotated(Vector3(0, 1, 0), cam_rot.y * PI/180) + _look_at_vec = _look_at_vec.rotated(_x_axis, cam_rot.x * PI/180) + func _process(delta: float) -> void: var player1 = get_parent().get_child(3) @@ -12,6 +24,6 @@ func _process(delta: float) -> void: var center = player2.transform.origin + (player1.transform.origin - player2.transform.origin) / 2.0 var distance = (player1.transform.origin - player2.transform.origin).length() - camera.fov = distance + 50.0 + camera.fov = distance * FOV_MOD + 60.0 - transform.origin = center + transform.origin = center - _look_at_vec * distance * DISTANCE_MOD diff --git a/default_env.tres b/default_env.tres index 20207a4..6ed3d60 100644 --- a/default_env.tres +++ b/default_env.tres @@ -1,7 +1,7 @@ -[gd_resource type="Environment" load_steps=2 format=2] - -[sub_resource type="ProceduralSky" id=1] +[gd_resource type="Environment" format=2] [resource] -background_mode = 2 -background_sky = SubResource( 1 ) +ambient_light_color = Color( 0.203922, 0.231373, 0.329412, 1 ) +tonemap_mode = 2 +tonemap_exposure = 0.6 +tonemap_white = 1.5