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"
type="StreamTexture"
path="res://.import/blobby-effects-spritesheet.png-96fbd93f447d801bf91090bfbf2e0c14.stex"
path="res://.import/run-dusting1.png-01275136d032d124ce874b8793ba4a98.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/blobby/blobby-effects-spritesheet.png"
dest_files=[ "res://.import/blobby-effects-spritesheet.png-96fbd93f447d801bf91090bfbf2e0c14.stex" ]
source_file="res://assets/effects/run-dusting1.png"
dest_files=[ "res://.import/run-dusting1.png-01275136d032d124ce874b8793ba4a98.stex" ]
[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 floor_friction := base_floor_friction
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
# This is added to the acceleration force initially
@ -27,8 +27,8 @@ var init_acceleration_force := {
# newtonmeters is the unit
var acceleration_force := {
"walk": Vector2(1800, 1300),
"fall": Vector2(2000, 0),
"jump": Vector2(2000, 0),
"fall": Vector2(1800, 0),
"jump": Vector2(1800, 0),
"idle": Vector2(1800, 1233),
"duck": Vector2(500, 1300),
"run": Vector2(2500, 1400),

View File

@ -287,8 +287,8 @@ func calculate_jump_velocity(
linear_velocity.y += _gravity * delta
# TODO This is poop too
if -45 < velocity.x and direction.x < 0 || \
45 > velocity.x and direction.x > 0:
if -max_velocity["jump"].x < 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, acceleration_force[state].x * direction.x,
mass,
@ -306,14 +306,14 @@ func calculate_fall_velocity(
linear_velocity: Vector2, delta: float, direction: Vector2
) -> Vector2:
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, _gravity * mass, mass, delta
)
else:
linear_velocity.y = max_velocity["fall"]
if -45 < velocity.x and direction.x < 0 || \
45 > velocity.x and direction.x > 0:
linear_velocity.y = max_velocity["fall"].y
if -max_velocity["fall"].x < velocity.x and direction.x < 0 || \
max_velocity["fall"].x > velocity.x and direction.x > 0:
# TODO This is poop
linear_velocity.x = PhysicsFunc.two_step_euler(
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/BlobbyStateMachine.gd" type="Script" id=3]
[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://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]
extents = Vector2( 14.9127, 5.98593 )
@ -303,7 +304,7 @@ states/wallsliding/node = SubResource( 96 )
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 ) ]
start_node = "idling"
graph_offset = Vector2( 1027.54, -183.431 )
graph_offset = Vector2( 1082.54, -290.431 )
[sub_resource type="AnimationNodeStateMachinePlayback" id=48]
@ -481,7 +482,7 @@ tracks/13/keys = {
"values": [ Vector2( -1, 1 ) ]
}
tracks/14/type = "value"
tracks/14/path = NodePath("../BlobbyStateEffects:frame")
tracks/14/path = NodePath(".:material:shader_param/sensitivity")
tracks/14/interp = 1
tracks/14/loop_wrap = true
tracks/14/imported = false
@ -490,10 +491,10 @@ tracks/14/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ 8 ]
"values": [ 0.0 ]
}
tracks/15/type = "value"
tracks/15/path = NodePath("../BlobbyStateEffects:position")
tracks/15/path = NodePath(".:material:shader_param/scale")
tracks/15/interp = 1
tracks/15/loop_wrap = true
tracks/15/imported = false
@ -502,66 +503,6 @@ tracks/15/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"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 ]
}
@ -811,18 +752,6 @@ tracks/10/keys = {
"update": 0,
"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]
length = 0.1
@ -959,18 +888,6 @@ tracks/10/keys = {
"update": 0,
"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]
resource_name = "duckingLeft"
@ -1108,18 +1025,6 @@ tracks/10/keys = {
"update": 0,
"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]
resource_name = "dying"
@ -1377,18 +1282,6 @@ tracks/10/keys = {
"update": 0,
"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]
resource_name = "fallingLeft"
@ -1526,18 +1419,6 @@ tracks/10/keys = {
"update": 0,
"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]
length = 0.133
@ -1674,18 +1555,6 @@ tracks/10/keys = {
"update": 0,
"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]
length = 7.6
@ -1822,18 +1691,6 @@ tracks/10/keys = {
"update": 0,
"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]
resource_name = "idlingLeft"
@ -1971,18 +1828,6 @@ tracks/10/keys = {
"update": 0,
"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]
length = 0.13
@ -2119,18 +1964,6 @@ tracks/10/keys = {
"update": 0,
"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]
resource_name = "jumpToFallLeft"
@ -2268,18 +2101,6 @@ tracks/10/keys = {
"update": 0,
"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]
length = 0.1
@ -2416,18 +2237,6 @@ tracks/10/keys = {
"update": 0,
"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]
resource_name = "jumpingLeft"
@ -2565,18 +2374,6 @@ tracks/10/keys = {
"update": 0,
"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]
length = 0.23
@ -2713,18 +2510,6 @@ tracks/10/keys = {
"update": 0,
"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]
resource_name = "runToJumpLeft"
@ -2862,18 +2647,6 @@ tracks/10/keys = {
"update": 0,
"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]
resource_name = "running"
@ -3012,54 +2785,6 @@ tracks/10/keys = {
"update": 0,
"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]
resource_name = "runningLeft"
@ -3198,54 +2923,6 @@ tracks/10/keys = {
"update": 0,
"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]
length = 0.133
@ -3382,18 +3059,6 @@ tracks/10/keys = {
"update": 0,
"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]
resource_name = "turnToRunLeft"
@ -3531,18 +3196,6 @@ tracks/10/keys = {
"update": 0,
"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]
length = 0.5
@ -3679,18 +3332,6 @@ tracks/10/keys = {
"update": 0,
"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]
resource_name = "walkingLeft"
@ -3828,18 +3469,6 @@ tracks/10/keys = {
"update": 0,
"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]
length = 0.15
@ -3976,18 +3605,6 @@ tracks/10/keys = {
"update": 0,
"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]
resource_name = "wallslideToJumpRight"
@ -4125,18 +3742,6 @@ tracks/10/keys = {
"update": 0,
"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]
length = 0.1
@ -4273,18 +3878,6 @@ tracks/10/keys = {
"update": 0,
"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]
resource_name = "wallslidingRight"
@ -4422,18 +4015,16 @@ tracks/10/keys = {
"update": 0,
"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="ParticlesMaterial" id=197]
flag_disable_z = true
direction = Vector3( -10, -1, 0 )
spread = 1.0
initial_velocity = 40.0
orbit_velocity = 0.0
orbit_velocity_random = 0.0
linear_accel = -20.0
damping = 20.0
[sub_resource type="Animation" id=181]
length = 0.001
@ -4659,7 +4250,20 @@ anims/wallslideToJumpRight = SubResource( 101 )
anims/wallsliding = SubResource( 74 )
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="."]
visible = false
position = Vector2( 3.07106, -16.064 )
scale = Vector2( -1, 1 )
texture = ExtResource( 1 )
@ -4672,14 +4276,6 @@ anims/RESET = SubResource( 181 )
anims/airstrafing = SubResource( 182 )
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="."]
unique_name_in_owner = true
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_state_playback = parent.get_node("BlobbySprite/AnimationTree").get("parameters/playback")
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 slope_raycast = get_node("%SlopeRaycast")
@ -201,6 +202,11 @@ func _enter_state(new_state, old_state):
else:
init_boost = false
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():
emit_signal("got_grounded")
@ -233,6 +239,8 @@ func _enter_state(new_state, old_state):
func _exit_state(_old_state, _new_state):
if(_old_state == "run"):
running_particles.emitting = false
pass
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_left = 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()):
position = blobby.position
@ -108,8 +108,8 @@ func _set_boundaries():
# TODO +2 is fixed for camera issue in adjust horizontal
limit_right = rect.end.x * cell_size.x - 8
limit_left = rect.position.x * cell_size.x + 8
limit_top = rect.position.y * cell_size.y
limit_bottom = rect.end.y * cell_size.y
limit_top = rect.position.y * cell_size.y + 8
limit_bottom = rect.end.y * cell_size.y - 8
original_limit_left = limit_left
original_limit_right = limit_right
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 Maybe just make background black and dont bother
func _adjust_horizontal_offset(delta: float) -> void:
if (limit_left - position.x - screen_left.x > 0.001):
func _adjust_offset(delta: float) -> void:
var new_offset = offset
if (limit_left - position.x - screen_left.x > 0.1):
if (anim_player.is_playing()):
anim_player.stop(false)
offset.x += (limit_left - position.x - screen_left.x)/2
if (limit_right - position.x - screen_right.x < 0.001):
new_offset.x += (limit_left - position.x - screen_left.x)/2
if (limit_right - position.x - screen_right.x < 0.1):
if (anim_player.is_playing()):
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:
limit_left = original_limit_left

View File

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

View File

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

View File

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

View File

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

View File

@ -426,12 +426,12 @@ graph_offset = Vector2( -340, -193 )
extents = Vector2( 12, 9 )
[sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 18.5714, 2.85714 )
extents = Vector2( 15.7143, 2.14286 )
[sub_resource type="RectangleShape2D" id=3]
extents = Vector2( 18.2143, 13.5955 )
[node name="WhatAreFrog" type="KinematicBody2D" groups=["harmful"]]
[node name="WhatAreFrog" type="KinematicBody2D"]
collision_layer = 2
collision_mask = 57
collision/safe_margin = 0.001
@ -553,7 +553,8 @@ input_pickable = false
monitorable = false
[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 )
[node name="EnemySkin" type="Area2D" parent="."]

View File

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

View File

@ -44,10 +44,10 @@ unique_name_in_owner = true
drag_margin_bottom = 0.3
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
frame = 4
frame = 2
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
frame = 4
frame = 2
[node name="Blobby" parent="." instance=ExtResource( 9 )]
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 )]
position = Vector2( 552, 288 )
blindspot_angle = 20
acceleration = 90
max_speed = 120
acceleration = 80
max_speed = 100
weight = 0.2
[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