balance, fix: more in jump accel, froggy behavior fixes

This commit is contained in:
Jakob Feldmann 2023-04-24 00:06:59 +02:00
parent f6bc1e7895
commit 6a5bd5f830
26 changed files with 343 additions and 478 deletions

View File

Before

Width:  |  Height:  |  Size: 915 B

After

Width:  |  Height:  |  Size: 915 B

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/blobby-effects-spritesheet.png-046e6327578f906889b338fa7d954dd5.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/effects/blobby-effects-spritesheet.png"
dest_files=[ "res://.import/blobby-effects-spritesheet.png-046e6327578f906889b338fa7d954dd5.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 B

View File

@ -2,15 +2,15 @@
importer="texture" importer="texture"
type="StreamTexture" type="StreamTexture"
path="res://.import/blobby-effects-spritesheet.png-96fbd93f447d801bf91090bfbf2e0c14.stex" path="res://.import/run-dusting1.png-01275136d032d124ce874b8793ba4a98.stex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://assets/blobby/blobby-effects-spritesheet.png" source_file="res://assets/effects/run-dusting1.png"
dest_files=[ "res://.import/blobby-effects-spritesheet.png-96fbd93f447d801bf91090bfbf2e0c14.stex" ] dest_files=[ "res://.import/run-dusting1.png-01275136d032d124ce874b8793ba4a98.stex" ]
[params] [params]

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/run-dusting2.png-5d3138e9a1cad23467a8410ccc9759f5.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/effects/run-dusting2.png"
dest_files=[ "res://.import/run-dusting2.png-5d3138e9a1cad23467a8410ccc9759f5.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/run-dusting3.png-7bf0422976389cd92d1a9830a793b0ce.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/effects/run-dusting3.png"
dest_files=[ "res://.import/run-dusting3.png-7bf0422976389cd92d1a9830a793b0ce.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/run-dusting4.png-7a5287681d52628233a05d53c88a89b8.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/effects/run-dusting4.png"
dest_files=[ "res://.import/run-dusting4.png-7a5287681d52628233a05d53c88a89b8.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@ -0,0 +1,18 @@
[gd_resource type="AnimatedTexture" load_steps=5 format=2]
[ext_resource path="res://assets/effects/run-dusting2.png" type="Texture" id=1]
[ext_resource path="res://assets/effects/run-dusting3.png" type="Texture" id=2]
[ext_resource path="res://assets/effects/run-dusting1.png" type="Texture" id=3]
[ext_resource path="res://assets/effects/run-dusting4.png" type="Texture" id=4]
[resource]
frames = 4
fps = 3.0
frame_0/texture = ExtResource( 3 )
frame_0/delay_sec = 0.1
frame_1/texture = ExtResource( 1 )
frame_1/delay_sec = 0.1
frame_2/texture = ExtResource( 2 )
frame_2/delay_sec = 0.1
frame_3/texture = ExtResource( 4 )
frame_3/delay_sec = 0.1

View File

@ -16,7 +16,7 @@ var wallslide_threshold := 1000
var base_floor_friction := 0.5 var base_floor_friction := 0.5
var floor_friction := base_floor_friction var floor_friction := base_floor_friction
var max_velocity := { var max_velocity := {
"walk": 120, "run": 160, "fall": 420, "walljump": 200, "idle": 12000, "duck": 160 "walk": 120, "run": 160, "jump": Vector2(120, 420), "fall": Vector2(120, 420), "walljump": 200, "idle": 12000, "duck": 160
} }
var velocity_jump_boost_ratio := 10 var velocity_jump_boost_ratio := 10
# This is added to the acceleration force initially # This is added to the acceleration force initially
@ -27,8 +27,8 @@ var init_acceleration_force := {
# newtonmeters is the unit # newtonmeters is the unit
var acceleration_force := { var acceleration_force := {
"walk": Vector2(1800, 1300), "walk": Vector2(1800, 1300),
"fall": Vector2(2000, 0), "fall": Vector2(1800, 0),
"jump": Vector2(2000, 0), "jump": Vector2(1800, 0),
"idle": Vector2(1800, 1233), "idle": Vector2(1800, 1233),
"duck": Vector2(500, 1300), "duck": Vector2(500, 1300),
"run": Vector2(2500, 1400), "run": Vector2(2500, 1400),

View File

@ -287,8 +287,8 @@ func calculate_jump_velocity(
linear_velocity.y += _gravity * delta linear_velocity.y += _gravity * delta
# TODO This is poop too # TODO This is poop too
if -45 < velocity.x and direction.x < 0 || \ if -max_velocity["jump"].x < velocity.x and direction.x < 0 || \
45 > velocity.x and direction.x > 0: max_velocity["jump"].x > velocity.x and direction.x > 0:
linear_velocity.x = PhysicsFunc.two_step_euler( linear_velocity.x = PhysicsFunc.two_step_euler(
linear_velocity.x, acceleration_force[state].x * direction.x, linear_velocity.x, acceleration_force[state].x * direction.x,
mass, mass,
@ -306,14 +306,14 @@ func calculate_fall_velocity(
linear_velocity: Vector2, delta: float, direction: Vector2 linear_velocity: Vector2, delta: float, direction: Vector2
) -> Vector2: ) -> Vector2:
var state = player_state_machine.state var state = player_state_machine.state
if velocity.y < max_velocity["fall"]: if velocity.y < max_velocity["fall"].y:
linear_velocity.y = PhysicsFunc.two_step_euler( linear_velocity.y = PhysicsFunc.two_step_euler(
linear_velocity.y, _gravity * mass, mass, delta linear_velocity.y, _gravity * mass, mass, delta
) )
else: else:
linear_velocity.y = max_velocity["fall"] linear_velocity.y = max_velocity["fall"].y
if -45 < velocity.x and direction.x < 0 || \ if -max_velocity["fall"].x < velocity.x and direction.x < 0 || \
45 > velocity.x and direction.x > 0: max_velocity["fall"].x > velocity.x and direction.x > 0:
# TODO This is poop # TODO This is poop
linear_velocity.x = PhysicsFunc.two_step_euler( linear_velocity.x = PhysicsFunc.two_step_euler(
linear_velocity.x, acceleration_force[state].x * direction.x, linear_velocity.x, acceleration_force[state].x * direction.x,

View File

@ -1,11 +1,12 @@
[gd_scene load_steps=122 format=2] [gd_scene load_steps=124 format=2]
[ext_resource path="res://assets/blobby/blobby-effects-spritesheet.png" type="Texture" id=1] [ext_resource path="res://assets/effects/blobby-effects-spritesheet.png" type="Texture" id=1]
[ext_resource path="res://src/Actors/Blobby/DeathShader.tres" type="Material" id=2] [ext_resource path="res://src/Actors/Blobby/DeathShader.tres" type="Material" id=2]
[ext_resource path="res://src/Actors/Blobby/BlobbyStateMachine.gd" type="Script" id=3] [ext_resource path="res://src/Actors/Blobby/BlobbyStateMachine.gd" type="Script" id=3]
[ext_resource path="res://src/Actors/Blobby/Blobby.gd" type="Script" id=4] [ext_resource path="res://src/Actors/Blobby/Blobby.gd" type="Script" id=4]
[ext_resource path="res://assets/meta/new_dynamicfont.tres" type="DynamicFont" id=5] [ext_resource path="res://assets/meta/new_dynamicfont.tres" type="DynamicFont" id=5]
[ext_resource path="res://src/ThirdParty/Demo/IridescenceBall.tscn" type="PackedScene" id=6] [ext_resource path="res://src/ThirdParty/Demo/IridescenceBall.tscn" type="PackedScene" id=6]
[ext_resource path="res://assets/effects/running smoke.tres" type="Texture" id=7]
[sub_resource type="RectangleShape2D" id=2] [sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 14.9127, 5.98593 ) extents = Vector2( 14.9127, 5.98593 )
@ -303,7 +304,7 @@ states/wallsliding/node = SubResource( 96 )
states/wallsliding/position = Vector2( 1795.54, 493.009 ) states/wallsliding/position = Vector2( 1795.54, 493.009 )
transitions = [ "falling", "wallsliding", SubResource( 138 ), "wallsliding", "idling", SubResource( 139 ), "wallsliding", "wallslideToJump", SubResource( 140 ), "wallslideToJump", "jumping", SubResource( 141 ), "idling", "jumping", SubResource( 147 ), "runToJump", "jumping", SubResource( 148 ), "ducking", "jumping", SubResource( 149 ), "jumping", "jumpToFall", SubResource( 150 ), "jumpToFall", "falling", SubResource( 151 ), "ducking", "duckTurn", SubResource( 152 ), "duckTurn", "ducking", SubResource( 153 ), "falling", "ducking", SubResource( 154 ), "ducking", "falling", SubResource( 155 ), "ducking", "walking", SubResource( 156 ), "walking", "ducking", SubResource( 157 ), "idling", "ducking", SubResource( 158 ), "ducking", "idling", SubResource( 159 ), "ducking", "running", SubResource( 160 ), "running", "ducking", SubResource( 161 ), "running", "falling", SubResource( 162 ), "falling", "running", SubResource( 163 ), "walking", "falling", SubResource( 164 ), "falling", "walking", SubResource( 165 ), "falling", "idling", SubResource( 166 ), "idling", "walking", SubResource( 167 ), "walking", "idling", SubResource( 168 ), "walking", "turnToRun", SubResource( 169 ), "turnToRun", "walking", SubResource( 170 ), "running", "turnToRun", SubResource( 171 ), "turnToRun", "running", SubResource( 172 ), "idling", "idleTurn", SubResource( 173 ), "walking", "idleTurn", SubResource( 174 ), "idleTurn", "walking", SubResource( 175 ), "idling", "turnToRun", SubResource( 176 ), "turnToRun", "idling", SubResource( 177 ), "running", "runToJump", SubResource( 178 ), "wallsliding", "falling", SubResource( 137 ), "jumping", "wallsliding", SubResource( 189 ), "jumping", "idling", SubResource( 193 ), "jumping", "walking", SubResource( 194 ), "runToJump", "wallsliding", SubResource( 195 ), "jumpToFall", "idling", SubResource( 196 ) ] transitions = [ "falling", "wallsliding", SubResource( 138 ), "wallsliding", "idling", SubResource( 139 ), "wallsliding", "wallslideToJump", SubResource( 140 ), "wallslideToJump", "jumping", SubResource( 141 ), "idling", "jumping", SubResource( 147 ), "runToJump", "jumping", SubResource( 148 ), "ducking", "jumping", SubResource( 149 ), "jumping", "jumpToFall", SubResource( 150 ), "jumpToFall", "falling", SubResource( 151 ), "ducking", "duckTurn", SubResource( 152 ), "duckTurn", "ducking", SubResource( 153 ), "falling", "ducking", SubResource( 154 ), "ducking", "falling", SubResource( 155 ), "ducking", "walking", SubResource( 156 ), "walking", "ducking", SubResource( 157 ), "idling", "ducking", SubResource( 158 ), "ducking", "idling", SubResource( 159 ), "ducking", "running", SubResource( 160 ), "running", "ducking", SubResource( 161 ), "running", "falling", SubResource( 162 ), "falling", "running", SubResource( 163 ), "walking", "falling", SubResource( 164 ), "falling", "walking", SubResource( 165 ), "falling", "idling", SubResource( 166 ), "idling", "walking", SubResource( 167 ), "walking", "idling", SubResource( 168 ), "walking", "turnToRun", SubResource( 169 ), "turnToRun", "walking", SubResource( 170 ), "running", "turnToRun", SubResource( 171 ), "turnToRun", "running", SubResource( 172 ), "idling", "idleTurn", SubResource( 173 ), "walking", "idleTurn", SubResource( 174 ), "idleTurn", "walking", SubResource( 175 ), "idling", "turnToRun", SubResource( 176 ), "turnToRun", "idling", SubResource( 177 ), "running", "runToJump", SubResource( 178 ), "wallsliding", "falling", SubResource( 137 ), "jumping", "wallsliding", SubResource( 189 ), "jumping", "idling", SubResource( 193 ), "jumping", "walking", SubResource( 194 ), "runToJump", "wallsliding", SubResource( 195 ), "jumpToFall", "idling", SubResource( 196 ) ]
start_node = "idling" start_node = "idling"
graph_offset = Vector2( 1027.54, -183.431 ) graph_offset = Vector2( 1082.54, -290.431 )
[sub_resource type="AnimationNodeStateMachinePlayback" id=48] [sub_resource type="AnimationNodeStateMachinePlayback" id=48]
@ -481,7 +482,7 @@ tracks/13/keys = {
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/14/type = "value" tracks/14/type = "value"
tracks/14/path = NodePath("../BlobbyStateEffects:frame") tracks/14/path = NodePath(".:material:shader_param/sensitivity")
tracks/14/interp = 1 tracks/14/interp = 1
tracks/14/loop_wrap = true tracks/14/loop_wrap = true
tracks/14/imported = false tracks/14/imported = false
@ -490,10 +491,10 @@ tracks/14/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ 8 ] "values": [ 0.0 ]
} }
tracks/15/type = "value" tracks/15/type = "value"
tracks/15/path = NodePath("../BlobbyStateEffects:position") tracks/15/path = NodePath(".:material:shader_param/scale")
tracks/15/interp = 1 tracks/15/interp = 1
tracks/15/loop_wrap = true tracks/15/loop_wrap = true
tracks/15/imported = false tracks/15/imported = false
@ -502,66 +503,6 @@ tracks/15/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( 3.07106, -16.064 ) ]
}
tracks/16/type = "value"
tracks/16/path = NodePath("../BlobbyStateEffects:visible")
tracks/16/interp = 1
tracks/16/loop_wrap = true
tracks/16/imported = false
tracks/16/enabled = true
tracks/16/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ true ]
}
tracks/17/type = "value"
tracks/17/path = NodePath("../BlobbyStateEffects:scale")
tracks/17/interp = 1
tracks/17/loop_wrap = true
tracks/17/imported = false
tracks/17/enabled = true
tracks/17/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -1, 1 ) ]
}
tracks/18/type = "value"
tracks/18/path = NodePath("../BlobbyStateEffects:offset")
tracks/18/interp = 1
tracks/18/loop_wrap = true
tracks/18/imported = false
tracks/18/enabled = true
tracks/18/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 4, 0 ) ]
}
tracks/19/type = "value"
tracks/19/path = NodePath(".:material:shader_param/sensitivity")
tracks/19/interp = 1
tracks/19/loop_wrap = true
tracks/19/imported = false
tracks/19/enabled = true
tracks/19/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ 0.0 ]
}
tracks/20/type = "value"
tracks/20/path = NodePath(".:material:shader_param/scale")
tracks/20/interp = 1
tracks/20/loop_wrap = true
tracks/20/imported = false
tracks/20/enabled = true
tracks/20/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ 1.0 ] "values": [ 1.0 ]
} }
@ -811,18 +752,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=69] [sub_resource type="Animation" id=69]
length = 0.1 length = 0.1
@ -959,18 +888,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=107] [sub_resource type="Animation" id=107]
resource_name = "duckingLeft" resource_name = "duckingLeft"
@ -1108,18 +1025,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=184] [sub_resource type="Animation" id=184]
resource_name = "dying" resource_name = "dying"
@ -1377,18 +1282,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=106] [sub_resource type="Animation" id=106]
resource_name = "fallingLeft" resource_name = "fallingLeft"
@ -1526,18 +1419,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=70] [sub_resource type="Animation" id=70]
length = 0.133 length = 0.133
@ -1674,18 +1555,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=7] [sub_resource type="Animation" id=7]
length = 7.6 length = 7.6
@ -1822,18 +1691,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=103] [sub_resource type="Animation" id=103]
resource_name = "idlingLeft" resource_name = "idlingLeft"
@ -1971,18 +1828,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=71] [sub_resource type="Animation" id=71]
length = 0.13 length = 0.13
@ -2119,18 +1964,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=105] [sub_resource type="Animation" id=105]
resource_name = "jumpToFallLeft" resource_name = "jumpToFallLeft"
@ -2268,18 +2101,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=8] [sub_resource type="Animation" id=8]
length = 0.1 length = 0.1
@ -2416,18 +2237,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=104] [sub_resource type="Animation" id=104]
resource_name = "jumpingLeft" resource_name = "jumpingLeft"
@ -2565,18 +2374,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=72] [sub_resource type="Animation" id=72]
length = 0.23 length = 0.23
@ -2713,18 +2510,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=143] [sub_resource type="Animation" id=143]
resource_name = "runToJumpLeft" resource_name = "runToJumpLeft"
@ -2862,18 +2647,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=49] [sub_resource type="Animation" id=49]
resource_name = "running" resource_name = "running"
@ -3012,54 +2785,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:frame")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 6, 9, 9, 9, 5, 6, 7 ]
}
tracks/12/type = "value"
tracks/12/path = NodePath("../BlobbyStateEffects:visible")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/imported = false
tracks/12/enabled = true
tracks/12/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ true ]
}
tracks/13/type = "value"
tracks/13/path = NodePath("../BlobbyStateEffects:scale")
tracks/13/interp = 1
tracks/13/loop_wrap = true
tracks/13/imported = false
tracks/13/enabled = true
tracks/13/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 1, 1 ) ]
}
tracks/14/type = "value"
tracks/14/path = NodePath("../BlobbyStateEffects:offset")
tracks/14/interp = 1
tracks/14/loop_wrap = true
tracks/14/imported = false
tracks/14/enabled = true
tracks/14/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -1, -1 ) ]
}
[sub_resource type="Animation" id=102] [sub_resource type="Animation" id=102]
resource_name = "runningLeft" resource_name = "runningLeft"
@ -3198,54 +2923,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:frame")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 6, 9, 9, 9, 5, 6, 7 ]
}
tracks/12/type = "value"
tracks/12/path = NodePath("../BlobbyStateEffects:visible")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/imported = false
tracks/12/enabled = true
tracks/12/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ true ]
}
tracks/13/type = "value"
tracks/13/path = NodePath("../BlobbyStateEffects:scale")
tracks/13/interp = 1
tracks/13/loop_wrap = true
tracks/13/imported = false
tracks/13/enabled = true
tracks/13/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( -1, 1 ) ]
}
tracks/14/type = "value"
tracks/14/path = NodePath("../BlobbyStateEffects:offset")
tracks/14/interp = 1
tracks/14/loop_wrap = true
tracks/14/imported = false
tracks/14/enabled = true
tracks/14/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 5, -1 ) ]
}
[sub_resource type="Animation" id=58] [sub_resource type="Animation" id=58]
length = 0.133 length = 0.133
@ -3382,18 +3059,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=100] [sub_resource type="Animation" id=100]
resource_name = "turnToRunLeft" resource_name = "turnToRunLeft"
@ -3531,18 +3196,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=9] [sub_resource type="Animation" id=9]
length = 0.5 length = 0.5
@ -3679,18 +3332,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=99] [sub_resource type="Animation" id=99]
resource_name = "walkingLeft" resource_name = "walkingLeft"
@ -3828,18 +3469,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=73] [sub_resource type="Animation" id=73]
length = 0.15 length = 0.15
@ -3976,18 +3605,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=101] [sub_resource type="Animation" id=101]
resource_name = "wallslideToJumpRight" resource_name = "wallslideToJumpRight"
@ -4125,18 +3742,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=74] [sub_resource type="Animation" id=74]
length = 0.1 length = 0.1
@ -4273,18 +3878,6 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( 1, 1 ) ] "values": [ Vector2( 1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[sub_resource type="Animation" id=97] [sub_resource type="Animation" id=97]
resource_name = "wallslidingRight" resource_name = "wallslidingRight"
@ -4422,18 +4015,16 @@ tracks/10/keys = {
"update": 0, "update": 0,
"values": [ Vector2( -1, 1 ) ] "values": [ Vector2( -1, 1 ) ]
} }
tracks/11/type = "value"
tracks/11/path = NodePath("../BlobbyStateEffects:visible") [sub_resource type="ParticlesMaterial" id=197]
tracks/11/interp = 1 flag_disable_z = true
tracks/11/loop_wrap = true direction = Vector3( -10, -1, 0 )
tracks/11/imported = false spread = 1.0
tracks/11/enabled = true initial_velocity = 40.0
tracks/11/keys = { orbit_velocity = 0.0
"times": PoolRealArray( 0 ), orbit_velocity_random = 0.0
"transitions": PoolRealArray( 1 ), linear_accel = -20.0
"update": 1, damping = 20.0
"values": [ false ]
}
[sub_resource type="Animation" id=181] [sub_resource type="Animation" id=181]
length = 0.001 length = 0.001
@ -4659,7 +4250,20 @@ anims/wallslideToJumpRight = SubResource( 101 )
anims/wallsliding = SubResource( 74 ) anims/wallsliding = SubResource( 74 )
anims/wallslidingRight = SubResource( 97 ) anims/wallslidingRight = SubResource( 97 )
[node name="RunningParticles" type="Particles2D" parent="."]
position = Vector2( 0, -17 )
z_index = 1
z_as_relative = false
emitting = false
amount = 1
lifetime = 0.3
local_coords = false
draw_order = 1
process_material = SubResource( 197 )
texture = ExtResource( 7 )
[node name="BlobbyActionEffects" type="Sprite" parent="."] [node name="BlobbyActionEffects" type="Sprite" parent="."]
visible = false
position = Vector2( 3.07106, -16.064 ) position = Vector2( 3.07106, -16.064 )
scale = Vector2( -1, 1 ) scale = Vector2( -1, 1 )
texture = ExtResource( 1 ) texture = ExtResource( 1 )
@ -4672,14 +4276,6 @@ anims/RESET = SubResource( 181 )
anims/airstrafing = SubResource( 182 ) anims/airstrafing = SubResource( 182 )
anims/airstrafingLeft = SubResource( 183 ) anims/airstrafingLeft = SubResource( 183 )
[node name="BlobbyStateEffects" type="Sprite" parent="."]
position = Vector2( 3.07106, -16.064 )
scale = Vector2( -1, 1 )
texture = ExtResource( 1 )
offset = Vector2( 4, 0 )
hframes = 10
frame = 8
[node name="Blobby3DEffects" type="Sprite" parent="."] [node name="Blobby3DEffects" type="Sprite" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
position = Vector2( 0, -9 ) position = Vector2( 0, -9 )

View File

@ -7,6 +7,7 @@ export var init_boost_type = ""
onready var anim_player = parent.get_node("BlobbySprite/BlobbymationPlayer") onready var anim_player = parent.get_node("BlobbySprite/BlobbymationPlayer")
onready var anim_state_playback = parent.get_node("BlobbySprite/AnimationTree").get("parameters/playback") onready var anim_state_playback = parent.get_node("BlobbySprite/AnimationTree").get("parameters/playback")
onready var anim_tree = parent.get_node("BlobbySprite/AnimationTree") onready var anim_tree = parent.get_node("BlobbySprite/AnimationTree")
onready var running_particles = parent.get_node("RunningParticles")
onready var sprite = parent.get_node("BlobbySprite") onready var sprite = parent.get_node("BlobbySprite")
onready var slope_raycast = get_node("%SlopeRaycast") onready var slope_raycast = get_node("%SlopeRaycast")
@ -202,6 +203,11 @@ func _enter_state(new_state, old_state):
init_boost = false init_boost = false
init_boost_type = "" init_boost_type = ""
if(new_state == "run"):
running_particles.emitting = true
running_particles.scale.x = facing
if !["run", "walk", "idle", "duck"].has(old_state) && parent.is_on_floor(): if !["run", "walk", "idle", "duck"].has(old_state) && parent.is_on_floor():
emit_signal("got_grounded") emit_signal("got_grounded")
@ -233,6 +239,8 @@ func _enter_state(new_state, old_state):
func _exit_state(_old_state, _new_state): func _exit_state(_old_state, _new_state):
if(_old_state == "run"):
running_particles.emitting = false
pass pass
func _set_blendspaces_direction(value): func _set_blendspaces_direction(value):

View File

@ -65,7 +65,7 @@ func _process(delta: float) -> void:
screen_top = screen_center - Vector2(0, screen_rect.y/2) screen_top = screen_center - Vector2(0, screen_rect.y/2)
screen_left = screen_center - Vector2(screen_rect.x/2, 0) screen_left = screen_center - Vector2(screen_rect.x/2, 0)
screen_right = screen_center + Vector2(screen_rect.x/2, 0) screen_right = screen_center + Vector2(screen_rect.x/2, 0)
_adjust_horizontal_offset(delta) _adjust_offset(delta)
if(anim_player.is_playing()): if(anim_player.is_playing()):
position = blobby.position position = blobby.position
@ -108,8 +108,8 @@ func _set_boundaries():
# TODO +2 is fixed for camera issue in adjust horizontal # TODO +2 is fixed for camera issue in adjust horizontal
limit_right = rect.end.x * cell_size.x - 8 limit_right = rect.end.x * cell_size.x - 8
limit_left = rect.position.x * cell_size.x + 8 limit_left = rect.position.x * cell_size.x + 8
limit_top = rect.position.y * cell_size.y limit_top = rect.position.y * cell_size.y + 8
limit_bottom = rect.end.y * cell_size.y limit_bottom = rect.end.y * cell_size.y - 8
original_limit_left = limit_left original_limit_left = limit_left
original_limit_right = limit_right original_limit_right = limit_right
original_limit_top = limit_top original_limit_top = limit_top
@ -177,15 +177,23 @@ func _adapt_to_input(velocity: Vector2) -> void:
# TODO This is a regulatory problem, it doesn't adapt fast enough # TODO This is a regulatory problem, it doesn't adapt fast enough
# TODO Maybe just make background black and dont bother # TODO Maybe just make background black and dont bother
func _adjust_horizontal_offset(delta: float) -> void: func _adjust_offset(delta: float) -> void:
if (limit_left - position.x - screen_left.x > 0.001): var new_offset = offset
if (limit_left - position.x - screen_left.x > 0.1):
if (anim_player.is_playing()): if (anim_player.is_playing()):
anim_player.stop(false) anim_player.stop(false)
offset.x += (limit_left - position.x - screen_left.x)/2 new_offset.x += (limit_left - position.x - screen_left.x)/2
if (limit_right - position.x - screen_right.x < 0.001): if (limit_right - position.x - screen_right.x < 0.1):
if (anim_player.is_playing()): if (anim_player.is_playing()):
anim_player.stop(false) anim_player.stop(false)
offset.x += (limit_right - position.x - screen_right.x)/2 new_offset.x += (limit_right - position.x - screen_right.x)/2
if (limit_top - position.y - screen_top.y > 0.001):
new_offset.y += (limit_top - position.y - screen_top.y)/2
if (limit_bottom - position.y - screen_bottom.y < 0.001):
new_offset.y += (limit_bottom - position.y - screen_bottom.y)/2
if(abs(offset.x) >= abs(new_offset.x) + 1):
offset = new_offset
func reset_limits() -> void: func reset_limits() -> void:
limit_left = original_limit_left limit_left = original_limit_left

View File

@ -56,5 +56,6 @@ func disconnect_rope() -> void:
func _on_FrogFreeButton_pushed() -> void: func _on_FrogFreeButton_pushed() -> void:
$WhatAreFrog.levelState.frees += 1 $WhatAreFrog.levelState.frees += 1
$WhatAreFrog.is_bound = false $WhatAreFrog.is_bound = false
$WhatAreFrog.remove_from_group("harmful")
disconnect_rope() disconnect_rope()
is_first_signal = false is_first_signal = false

View File

@ -7,7 +7,7 @@
extents = Vector2( 2.72463, 1.43961 ) extents = Vector2( 2.72463, 1.43961 )
[sub_resource type="RectangleShape2D" id=2] [sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 15, 3.0301 ) extents = Vector2( 15, 4.51505 )
[sub_resource type="RectangleShape2D" id=3] [sub_resource type="RectangleShape2D" id=3]
extents = Vector2( 15.534, 10.0962 ) extents = Vector2( 15.534, 10.0962 )
@ -35,14 +35,13 @@ scale = Vector2( 5.68128, 5.29182 )
shape = SubResource( 1 ) shape = SubResource( 1 )
[node name="StompDetector" type="Area2D" parent="." groups=["weakpoint"]] [node name="StompDetector" type="Area2D" parent="." groups=["weakpoint"]]
visible = false
modulate = Color( 0, 0.0392157, 1, 1 ) modulate = Color( 0, 0.0392157, 1, 1 )
position = Vector2( 0, -6.44095 ) position = Vector2( 0, -6.44095 )
collision_layer = 2 collision_layer = 2
input_pickable = false input_pickable = false
[node name="CollisionShape2D" type="CollisionShape2D" parent="StompDetector"] [node name="CollisionShape2D" type="CollisionShape2D" parent="StompDetector"]
position = Vector2( 0, -2.52895 ) position = Vector2( 0, -1.044 )
shape = SubResource( 2 ) shape = SubResource( 2 )
[node name="LedgeDetectorRays" type="Node2D" parent="."] [node name="LedgeDetectorRays" type="Node2D" parent="."]

View File

@ -222,7 +222,6 @@ valign = 1
[node name="FlyerSprite" type="Sprite" parent="."] [node name="FlyerSprite" type="Sprite" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
scale = Vector2( -1, 1 )
texture = ExtResource( 4 ) texture = ExtResource( 4 )
hframes = 2 hframes = 2
@ -236,13 +235,13 @@ anims/searchingLeft = SubResource( 34 )
[node name="AnimationTree" type="AnimationTree" parent="FlyerSprite"] [node name="AnimationTree" type="AnimationTree" parent="FlyerSprite"]
tree_root = SubResource( 50 ) tree_root = SubResource( 50 )
anim_player = NodePath("../AnimationPlayer") anim_player = NodePath("../AnimationPlayer")
active = true
root_motion_track = NodePath(".") root_motion_track = NodePath(".")
parameters/playback = SubResource( 51 ) parameters/playback = SubResource( 51 )
parameters/hunting/blend_position = -1.04288 parameters/hunting/blend_position = -1.04288
parameters/searching/blend_position = 1.2903 parameters/searching/blend_position = 1.2903
[node name="VisibilityEnabler2D" type="VisibilityEnabler2D" parent="."] [node name="VisibilityEnabler2D" type="VisibilityEnabler2D" parent="."]
visible = false
position = Vector2( 954, 0 ) position = Vector2( 954, 0 )
scale = Vector2( 10.84, 0.899 ) scale = Vector2( 10.84, 0.899 )
rect = Rect2( -89, -10, 2, 20 ) rect = Rect2( -89, -10, 2, 20 )
@ -250,12 +249,14 @@ process_parent = true
physics_process_parent = true physics_process_parent = true
[node name="FeelerRayCast" type="RayCast2D" parent="."] [node name="FeelerRayCast" type="RayCast2D" parent="."]
visible = false
enabled = true enabled = true
cast_to = Vector2( 0, -1 ) cast_to = Vector2( 0, -1 )
collision_mask = 56 collision_mask = 56
collide_with_areas = true collide_with_areas = true
[node name="EnemyBody" type="CollisionShape2D" parent="." groups=["harmful"]] [node name="EnemyBody" type="CollisionShape2D" parent="." groups=["harmful"]]
visible = false
shape = SubResource( 1 ) shape = SubResource( 1 )
[node name="NavigationAgent2D" type="NavigationAgent2D" parent="."] [node name="NavigationAgent2D" type="NavigationAgent2D" parent="."]
@ -263,6 +264,7 @@ path_desired_distance = 8.0
target_desired_distance = 8.0 target_desired_distance = 8.0
[node name="cshape" type="Node2D" parent="."] [node name="cshape" type="Node2D" parent="."]
visible = false
position = Vector2( 0, -3.8147e-06 ) position = Vector2( 0, -3.8147e-06 )
scale = Vector2( 0.1, 0.1 ) scale = Vector2( 0.1, 0.1 )
@ -272,6 +274,7 @@ bias = 0.108
softness = 0.1 softness = 0.1
[node name="StompDetector" type="Area2D" parent="." groups=["weakpoint"]] [node name="StompDetector" type="Area2D" parent="." groups=["weakpoint"]]
visible = false
modulate = Color( 0, 0.0392157, 1, 1 ) modulate = Color( 0, 0.0392157, 1, 1 )
position = Vector2( 0, -1.90735e-06 ) position = Vector2( 0, -1.90735e-06 )
scale = Vector2( 0.7, 0.7 ) scale = Vector2( 0.7, 0.7 )
@ -284,6 +287,7 @@ shape = SubResource( 2 )
[node name="EnemySkin" type="Area2D" parent="."] [node name="EnemySkin" type="Area2D" parent="."]
process_priority = -1 process_priority = -1
visible = false
scale = Vector2( 0.7, 0.7 ) scale = Vector2( 0.7, 0.7 )
collision_layer = 2 collision_layer = 2
collision_mask = 126 collision_mask = 126

View File

@ -49,7 +49,7 @@ var detect_timer := 0.0
var reversing_possible_searching := true var reversing_possible_searching := true
# TODO Make parameters tunable!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1111!!
func _ready(): func _ready():
default_jump_distance = default_jump_distance * tilemap.cell_size.x default_jump_distance = default_jump_distance * tilemap.cell_size.x
jump_timer = Timer.new() jump_timer = Timer.new()
@ -60,6 +60,7 @@ func _ready():
target_lost_timer.connect("timeout", self, "loose_target") target_lost_timer.connect("timeout", self, "loose_target")
add_child(jump_timer) add_child(jump_timer)
add_child(target_lost_timer) add_child(target_lost_timer)
if(is_bound): add_to_group("harmful")
func bind_to_anchor(anchor_node: Node2D, radius: float ) -> void: func bind_to_anchor(anchor_node: Node2D, radius: float ) -> void:
@ -69,20 +70,22 @@ func bind_to_anchor(anchor_node: Node2D, radius: float ) -> void:
func _on_StompDetector_body_entered(body: Node) -> void: func _on_StompDetector_body_entered(body: Node) -> void:
if !body.is_in_group("player"): if !body.is_in_group("player") || is_hurt:
return return
var incoming_vel_vector: Vector2 = body.velocity.normalized() var incoming_vel_vector: Vector2 = body.velocity.normalized()
# TODO This is not the right angle somehow # TODO This is not the right angle somehow
print(rad2deg(abs(incoming_vel_vector.angle_to(Vector2.DOWN.rotated(rotation))))) # print(rad2deg(abs(incoming_vel_vector.angle_to(Vector2.DOWN.rotated(rotation)))))
if abs(incoming_vel_vector.angle_to(Vector2.DOWN.rotated(rotation))) > deg2rad(60): # if abs(incoming_vel_vector.angle_to(Vector2.DOWN.rotated(rotation))) > deg2rad(60):
print("too shallow entry") # print("too shallow entry")
return # return
signalManager.emit_signal("got_stomped") signalManager.emit_signal("got_stomped")
remove_from_group("harmful") remove_from_group("harmful")
# TODO Weakpoint group is not needed per se
$StompDetector.remove_from_group("weakpoint") $StompDetector.remove_from_group("weakpoint")
get_node("EnemyBody").disabled = true get_node("EnemyBody").disabled = true
die() is_hurt = true
$FrogSprite.material = invincible_shader
$HurtTimer.start()
func execute_movement(delta: float) -> void: func execute_movement(delta: float) -> void:
@ -500,5 +503,5 @@ func get_facing_direction() -> float:
func _on_HurtTimer_timeout() -> void: func _on_HurtTimer_timeout() -> void:
is_hurt = false is_hurt = false
add_to_group("harmful") if(is_bound): add_to_group("harmful")
$FrogSprite.material = null $FrogSprite.material = null

View File

@ -426,12 +426,12 @@ graph_offset = Vector2( -340, -193 )
extents = Vector2( 12, 9 ) extents = Vector2( 12, 9 )
[sub_resource type="RectangleShape2D" id=2] [sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 18.5714, 2.85714 ) extents = Vector2( 15.7143, 2.14286 )
[sub_resource type="RectangleShape2D" id=3] [sub_resource type="RectangleShape2D" id=3]
extents = Vector2( 18.2143, 13.5955 ) extents = Vector2( 18.2143, 13.5955 )
[node name="WhatAreFrog" type="KinematicBody2D" groups=["harmful"]] [node name="WhatAreFrog" type="KinematicBody2D"]
collision_layer = 2 collision_layer = 2
collision_mask = 57 collision_mask = 57
collision/safe_margin = 0.001 collision/safe_margin = 0.001
@ -553,7 +553,8 @@ input_pickable = false
monitorable = false monitorable = false
[node name="CollisionShape2D" type="CollisionShape2D" parent="StompDetector"] [node name="CollisionShape2D" type="CollisionShape2D" parent="StompDetector"]
position = Vector2( 0, -1.42857 ) position = Vector2( -5.68434e-14, -2.14286 )
scale = Vector2( 0.999999, 0.999999 )
shape = SubResource( 2 ) shape = SubResource( 2 )
[node name="EnemySkin" type="Area2D" parent="."] [node name="EnemySkin" type="Area2D" parent="."]

View File

@ -36,10 +36,10 @@ unique_name_in_owner = true
drag_margin_bottom = 0.3 drag_margin_bottom = 0.3
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"] [node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
frame = 8 frame = 12
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"] [node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
frame = 8 frame = 7
[node name="Blobby" parent="." instance=ExtResource( 8 )] [node name="Blobby" parent="." instance=ExtResource( 8 )]
unique_name_in_owner = true unique_name_in_owner = true

View File

@ -44,10 +44,10 @@ unique_name_in_owner = true
drag_margin_bottom = 0.3 drag_margin_bottom = 0.3
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"] [node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
frame = 4 frame = 2
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"] [node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
frame = 4 frame = 2
[node name="Blobby" parent="." instance=ExtResource( 9 )] [node name="Blobby" parent="." instance=ExtResource( 9 )]
unique_name_in_owner = true unique_name_in_owner = true

View File

@ -86,9 +86,8 @@ tile_data = PoolIntArray( 65535, 1610612751, 0, 0, 1610612746, 0, 1, 1610612746,
[node name="Flyer" parent="." instance=ExtResource( 45 )] [node name="Flyer" parent="." instance=ExtResource( 45 )]
position = Vector2( 552, 288 ) position = Vector2( 552, 288 )
blindspot_angle = 20 acceleration = 80
acceleration = 90 max_speed = 100
max_speed = 120
weight = 0.2 weight = 0.2
[node name="AnimationTree" parent="Flyer/FlyerSprite" index="1"] [node name="AnimationTree" parent="Flyer/FlyerSprite" index="1"]

88
src/Levels/Level 5.tscn Normal file

File diff suppressed because one or more lines are too long