Swaying Grass implemented
This commit is contained in:
parent
ded07f8244
commit
b7bc027aa5
BIN
assets/environment/decor/bent_straw.aseprite
Normal file
BIN
assets/environment/decor/bent_straw.aseprite
Normal file
Binary file not shown.
26
assets/environment/decor/bent_straw.aseprite.import
Normal file
26
assets/environment/decor/bent_straw.aseprite.import
Normal file
@ -0,0 +1,26 @@
|
||||
[remap]
|
||||
|
||||
importer="aseprite.wizard.plugin"
|
||||
type="SpriteFrames"
|
||||
path="res://.import/bent_straw.aseprite-e42038488046e460e799823506d46bb8.res"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/environment/decor/bent_straw.aseprite"
|
||||
dest_files=[ "res://.import/bent_straw.aseprite-e42038488046e460e799823506d46bb8.res" ]
|
||||
|
||||
[params]
|
||||
|
||||
split_layers=false
|
||||
exclude_layers_pattern=""
|
||||
only_visible_layers=false
|
||||
sheet_type="Packed"
|
||||
sprite_filename_pattern="{basename}.{layer}.{extension}"
|
||||
texture_strip/import_texture_strip=false
|
||||
texture_strip/filename_pattern="{basename}.{layer}.Strip.{extension}"
|
||||
texture_atlas/import_texture_atlas=false
|
||||
texture_atlas/filename_pattern="{basename}.{layer}.Atlas.{extension}"
|
||||
texture_atlas/frame_filename_pattern="{basename}.{layer}.{animation}.{frame}.Atlas.{extension}"
|
||||
animated_texture/import_animated_texture=false
|
||||
animated_texture/filename_pattern="{basename}.{layer}.{animation}.Texture.{extension}"
|
||||
animated_texture/frame_filename_pattern="{basename}.{layer}.{animation}.{frame}.Texture.{extension}"
|
||||
BIN
assets/environment/decor/bent_straw.png
Normal file
BIN
assets/environment/decor/bent_straw.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 152 B |
35
assets/environment/decor/bent_straw.png.import
Normal file
35
assets/environment/decor/bent_straw.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/bent_straw.png-34af1874e71c7c7b0749bdc0374dc29d.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/environment/decor/bent_straw.png"
|
||||
dest_files=[ "res://.import/bent_straw.png-34af1874e71c7c7b0749bdc0374dc29d.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
|
||||
BIN
assets/environment/decor/short_straw.aseprite
Normal file
BIN
assets/environment/decor/short_straw.aseprite
Normal file
Binary file not shown.
26
assets/environment/decor/short_straw.aseprite.import
Normal file
26
assets/environment/decor/short_straw.aseprite.import
Normal file
@ -0,0 +1,26 @@
|
||||
[remap]
|
||||
|
||||
importer="aseprite.wizard.plugin"
|
||||
type="SpriteFrames"
|
||||
path="res://.import/short_straw.aseprite-dc5d8347b9d6d5e161cbd2f672a5b8c7.res"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/environment/decor/short_straw.aseprite"
|
||||
dest_files=[ "res://.import/short_straw.aseprite-dc5d8347b9d6d5e161cbd2f672a5b8c7.res" ]
|
||||
|
||||
[params]
|
||||
|
||||
split_layers=false
|
||||
exclude_layers_pattern=""
|
||||
only_visible_layers=false
|
||||
sheet_type="Packed"
|
||||
sprite_filename_pattern="{basename}.{layer}.{extension}"
|
||||
texture_strip/import_texture_strip=false
|
||||
texture_strip/filename_pattern="{basename}.{layer}.Strip.{extension}"
|
||||
texture_atlas/import_texture_atlas=false
|
||||
texture_atlas/filename_pattern="{basename}.{layer}.Atlas.{extension}"
|
||||
texture_atlas/frame_filename_pattern="{basename}.{layer}.{animation}.{frame}.Atlas.{extension}"
|
||||
animated_texture/import_animated_texture=false
|
||||
animated_texture/filename_pattern="{basename}.{layer}.{animation}.Texture.{extension}"
|
||||
animated_texture/frame_filename_pattern="{basename}.{layer}.{animation}.{frame}.Texture.{extension}"
|
||||
BIN
assets/environment/decor/short_straw.png
Normal file
BIN
assets/environment/decor/short_straw.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 113 B |
35
assets/environment/decor/short_straw.png.import
Normal file
35
assets/environment/decor/short_straw.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/short_straw.png-74a4a080ce5e7e7272200d0d4a93bc94.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/environment/decor/short_straw.png"
|
||||
dest_files=[ "res://.import/short_straw.png-74a4a080ce5e7e7272200d0d4a93bc94.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
|
||||
BIN
assets/environment/decor/straight_straw.aseprite
Normal file
BIN
assets/environment/decor/straight_straw.aseprite
Normal file
Binary file not shown.
26
assets/environment/decor/straight_straw.aseprite.import
Normal file
26
assets/environment/decor/straight_straw.aseprite.import
Normal file
@ -0,0 +1,26 @@
|
||||
[remap]
|
||||
|
||||
importer="aseprite.wizard.plugin"
|
||||
type="SpriteFrames"
|
||||
path="res://.import/straight_straw.aseprite-95acb695229b4f32fa48786e91411e1d.res"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/environment/decor/straight_straw.aseprite"
|
||||
dest_files=[ "res://.import/straight_straw.aseprite-95acb695229b4f32fa48786e91411e1d.res" ]
|
||||
|
||||
[params]
|
||||
|
||||
split_layers=false
|
||||
exclude_layers_pattern=""
|
||||
only_visible_layers=false
|
||||
sheet_type="Packed"
|
||||
sprite_filename_pattern="{basename}.{layer}.{extension}"
|
||||
texture_strip/import_texture_strip=false
|
||||
texture_strip/filename_pattern="{basename}.{layer}.Strip.{extension}"
|
||||
texture_atlas/import_texture_atlas=false
|
||||
texture_atlas/filename_pattern="{basename}.{layer}.Atlas.{extension}"
|
||||
texture_atlas/frame_filename_pattern="{basename}.{layer}.{animation}.{frame}.Atlas.{extension}"
|
||||
animated_texture/import_animated_texture=false
|
||||
animated_texture/filename_pattern="{basename}.{layer}.{animation}.Texture.{extension}"
|
||||
animated_texture/frame_filename_pattern="{basename}.{layer}.{animation}.{frame}.Texture.{extension}"
|
||||
BIN
assets/environment/decor/straight_straw.png
Normal file
BIN
assets/environment/decor/straight_straw.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 113 B |
35
assets/environment/decor/straight_straw.png.import
Normal file
35
assets/environment/decor/straight_straw.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/straight_straw.png-de19826f989d2481c31d92ac559e94ef.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/environment/decor/straight_straw.png"
|
||||
dest_files=[ "res://.import/straight_straw.png-de19826f989d2481c31d92ac559e94ef.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
|
||||
@ -11,6 +11,7 @@ func reset() -> void:
|
||||
score = 0
|
||||
deaths = 0
|
||||
|
||||
#TODO Remove score
|
||||
func set_score(value: int) -> void:
|
||||
score = value
|
||||
emit_signal("score_updated")
|
||||
|
||||
30
src/Environment/GrassWithBonesTest.tscn
Normal file
30
src/Environment/GrassWithBonesTest.tscn
Normal file
@ -0,0 +1,30 @@
|
||||
[gd_scene load_steps=2 format=2]
|
||||
|
||||
[ext_resource path="res://assets/environment/decor/straight_straw.png" type="Texture" id=1]
|
||||
|
||||
[node name="GrassWithBones" type="Node2D"]
|
||||
|
||||
[node name="Polygon2D" type="Polygon2D" parent="."]
|
||||
offset = Vector2( -6.5, -12.5 )
|
||||
texture = ExtResource( 1 )
|
||||
skeleton = NodePath("../Skeleton2D")
|
||||
polygon = PoolVector2Array( 4.166, 12.5, 4.166, 7.25, 4.166, 1.5, 9.103, 1.5, 9.10325, 7.25, 9.103, 12.5 )
|
||||
uv = PoolVector2Array( 4.166, 12.5, 4.166, 7.25, 4.166, 1.5, 9.103, 1.5, 9.10325, 7.25, 9.103, 12.5 )
|
||||
polygons = [ PoolIntArray( 5, 0, 1, 2, 3, 4 ) ]
|
||||
bones = [ "Base", PoolRealArray( 1, 0.34, 0, 0, 0, 1 ), "Base/Mid", PoolRealArray( 0.66, 1, 0, 0.5, 1, 0.83 ), "Base/Mid/Top", PoolRealArray( 0.49, 0.32, 1, 1, 0.49, 0.49 ) ]
|
||||
|
||||
[node name="Skeleton2D" type="Skeleton2D" parent="."]
|
||||
|
||||
[node name="Base" type="Bone2D" parent="Skeleton2D"]
|
||||
rest = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
default_length = 7.0
|
||||
|
||||
[node name="Mid" type="Bone2D" parent="Skeleton2D/Base"]
|
||||
rest = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
default_length = 7.0
|
||||
|
||||
[node name="Top" type="Bone2D" parent="Skeleton2D/Base/Mid"]
|
||||
position = Vector2( 0, -5 )
|
||||
rotation = -1.5708
|
||||
rest = Transform2D( 2.22127e-06, -1, 1, 2.22127e-06, 0, -5 )
|
||||
default_length = 4.0
|
||||
76
src/Environment/ShaderGrass.gd
Normal file
76
src/Environment/ShaderGrass.gd
Normal file
@ -0,0 +1,76 @@
|
||||
extends Node2D
|
||||
|
||||
onready var blobby = get_node("../Blobby")
|
||||
|
||||
var last_distance: Vector2 = Vector2(100,100)
|
||||
|
||||
# TODO Incorporate other enteties and highlight mass differences
|
||||
var time = 0
|
||||
var radius = 15
|
||||
var v_radius = 15
|
||||
var draft_radius = 20
|
||||
var interact_power = 0.04
|
||||
var rand = rand_range(1,1.2)
|
||||
var displacement_coeff: Vector2 = Vector2(1.0,0)
|
||||
var saved_displacement
|
||||
var is_idle_swinging
|
||||
var start_swing_time
|
||||
var begin_idle
|
||||
|
||||
func _ready():
|
||||
# TODO This could probably fuck something up later? For other randomness based events
|
||||
randomize()
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
var distance: float = abs(global_position.x - blobby.global_position.x + 6)
|
||||
var v_distance: float = abs(global_position.y - blobby.global_position.y + 11)
|
||||
var blobby_vel = (last_distance.x - distance)/delta
|
||||
var blobby_v_vel = (last_distance.y - v_distance)/delta
|
||||
var direction: Vector2 = Vector2(sign(global_position.x - blobby.global_position.x + 6),0)
|
||||
# TODO This only gets more and more unreadable *facepalm*
|
||||
var power = smoothstep(radius, 0, distance)
|
||||
var v_power = smoothstep(v_radius, 0, v_distance)
|
||||
var draft_power = smoothstep(draft_radius, radius, distance)
|
||||
|
||||
if (distance >= radius && distance <= draft_radius && blobby_vel < -0.1 && v_distance < 14):
|
||||
displacement_coeff += direction * (draft_power/radius) * blobby_vel * interact_power
|
||||
saved_displacement = displacement_coeff.x
|
||||
is_idle_swinging = false
|
||||
$Timer.stop()
|
||||
|
||||
# TODO v_distance could be a problem for upside down stuff
|
||||
elif (distance < radius && distance > 1 && blobby_vel != 0 && v_distance < 14 && blobby_v_vel ==0):
|
||||
displacement_coeff += direction * power/radius * 0.3 * blobby_vel * interact_power
|
||||
displacement_coeff += direction * power * 2 * interact_power
|
||||
saved_displacement = displacement_coeff.x
|
||||
is_idle_swinging = false
|
||||
$Timer.stop()
|
||||
|
||||
elif (v_distance < v_radius && distance < radius && blobby_v_vel != 0):
|
||||
displacement_coeff += direction * v_power/v_radius * blobby_v_vel * interact_power
|
||||
saved_displacement = displacement_coeff.x
|
||||
is_idle_swinging = false
|
||||
$Timer.stop()
|
||||
|
||||
else:
|
||||
if(abs(displacement_coeff.x) > 0.1 && !is_idle_swinging || !$Timer.is_stopped()):
|
||||
if($Timer.is_stopped()):
|
||||
saved_displacement = displacement_coeff.x
|
||||
$Timer.start()
|
||||
var t = $Timer.get_wait_time() - $Timer.get_time_left()
|
||||
displacement_coeff.x = saved_displacement * exp(-0.66 * t) * cos(t * 3.0 * rand)
|
||||
start_swing_time = time
|
||||
begin_idle = true
|
||||
else:
|
||||
$Timer.stop()
|
||||
is_idle_swinging = true
|
||||
var start = displacement_coeff.x if begin_idle else 0.0
|
||||
displacement_coeff.x = start * exp(-0.2 * (time-start_swing_time)) + 0.3 * -sin(2.0*(time - start_swing_time))
|
||||
begin_idle = false
|
||||
|
||||
for polygon in get_children():
|
||||
if polygon is Polygon2D:
|
||||
polygon.material.set_shader_param("displacement_coefficient_x", displacement_coeff.x)
|
||||
|
||||
last_distance = Vector2(distance, v_distance)
|
||||
time += delta
|
||||
8
src/Environment/ShaderGrass.gdshader
Normal file
8
src/Environment/ShaderGrass.gdshader
Normal file
@ -0,0 +1,8 @@
|
||||
shader_type canvas_item;
|
||||
|
||||
uniform float displacement_coefficient_x;
|
||||
|
||||
|
||||
void vertex() {
|
||||
VERTEX += vec2(displacement_coefficient_x,0.0) * (1.0 - UV.y);
|
||||
}
|
||||
8
src/Environment/ShaderGrass.tres
Normal file
8
src/Environment/ShaderGrass.tres
Normal file
@ -0,0 +1,8 @@
|
||||
[gd_resource type="ShaderMaterial" load_steps=2 format=2]
|
||||
|
||||
[ext_resource path="res://src/Environment/ShaderGrass.gdshader" type="Shader" id=1]
|
||||
|
||||
[resource]
|
||||
resource_local_to_scene = true
|
||||
shader = ExtResource( 1 )
|
||||
shader_param/displacement_coefficient_x = 0.0
|
||||
68
src/Environment/ShaderGrass.tscn
Normal file
68
src/Environment/ShaderGrass.tscn
Normal file
@ -0,0 +1,68 @@
|
||||
[gd_scene load_steps=8 format=2]
|
||||
|
||||
[ext_resource path="res://src/Environment/ShaderGrass.gd" type="Script" id=2]
|
||||
[ext_resource path="res://src/Environment/ShaderGrass.tres" type="Material" id=3]
|
||||
|
||||
[sub_resource type="StreamTexture" id=3]
|
||||
load_path = "res://.import/short_straw.png-74a4a080ce5e7e7272200d0d4a93bc94.stex"
|
||||
|
||||
[sub_resource type="StreamTexture" id=17]
|
||||
load_path = "res://.import/short_straw.png-74a4a080ce5e7e7272200d0d4a93bc94.stex"
|
||||
|
||||
[sub_resource type="StreamTexture" id=18]
|
||||
load_path = "res://.import/bent_straw.png-34af1874e71c7c7b0749bdc0374dc29d.stex"
|
||||
|
||||
[sub_resource type="StreamTexture" id=9]
|
||||
load_path = "res://.import/bent_straw.png-34af1874e71c7c7b0749bdc0374dc29d.stex"
|
||||
|
||||
[sub_resource type="StreamTexture" id=2]
|
||||
load_path = "res://.import/straight_straw.png-de19826f989d2481c31d92ac559e94ef.stex"
|
||||
|
||||
[node name="ShaderGrass" type="Node2D"]
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="ShortStrawPolygon2" type="Polygon2D" parent="."]
|
||||
material = ExtResource( 3 )
|
||||
position = Vector2( -2.30669, 0 )
|
||||
texture = SubResource( 3 )
|
||||
polygon = PoolVector2Array( 4.8599, 12.1162, 4.84375, 7.21094, 4.91575, 2.9375, 5.84277, 2.85904, 5.84375, 1.88281, 6.96094, 1.90625, 6.999, 2.89845, 7.97825, 2.9375, 7.98438, 7.09375, 7.98528, 12.1279 )
|
||||
uv = PoolVector2Array( 4.47825, 12.125, 4.35325, 7.25, 4.41575, 2.6875, 5.66575, 2.5625, 5.66575, 1.3125, 7.16575, 1.3125, 7.22825, 2.5625, 8.54075, 2.625, 8.54075, 7.1875, 8.47825, 12.3125 )
|
||||
polygons = [ PoolIntArray( 0, 9, 1 ), PoolIntArray( 8, 1, 9 ), PoolIntArray( 8, 2, 1 ), PoolIntArray( 8, 2, 3, 4, 5, 6, 7 ) ]
|
||||
|
||||
[node name="ShortStrawPolygon3" type="Polygon2D" parent="."]
|
||||
material = ExtResource( 3 )
|
||||
position = Vector2( 1.24897, 0.113895 )
|
||||
texture = SubResource( 17 )
|
||||
polygon = PoolVector2Array( 4.8599, 12.1162, 4.84375, 7.21094, 4.91575, 2.9375, 5.84277, 2.85904, 5.84375, 1.88281, 6.96094, 1.90625, 6.999, 2.89845, 7.97825, 2.9375, 7.98438, 7.09375, 7.98528, 12.1279 )
|
||||
uv = PoolVector2Array( 4.47825, 12.125, 4.35325, 7.25, 4.41575, 2.6875, 5.66575, 2.5625, 5.66575, 1.3125, 7.16575, 1.3125, 7.22825, 2.5625, 8.54075, 2.625, 8.54075, 7.1875, 8.47825, 12.3125 )
|
||||
polygons = [ PoolIntArray( 0, 9, 1 ), PoolIntArray( 8, 1, 9 ), PoolIntArray( 8, 2, 1 ), PoolIntArray( 8, 2, 3, 4, 5, 6, 7 ) ]
|
||||
|
||||
[node name="BentStrawPolygon" type="Polygon2D" parent="."]
|
||||
material = ExtResource( 3 )
|
||||
position = Vector2( 6.58748, 0.206984 )
|
||||
texture = SubResource( 18 )
|
||||
polygon = PoolVector2Array( 1.00644, 12.0961, 1.03124, 8.84688, 2.2466, 7.82995, 4.05723, 5.74649, 5.89266, 5.69688, 7.8273, 5.79609, 8.47219, 6.21775, 8.4375, 7.4375, 5.49581, 9.39255, 4.03242, 12.0465 )
|
||||
uv = PoolVector2Array( 0.562501, 11.875, 0.875001, 8.5625, 2.25, 6.375, 4.5, 3.9375, 6.125, 3.1875, 8.25, 3.5, 9.0625, 4.4375, 9.1875, 6.3125, 6.125, 9.25, 4.5625, 11.875 )
|
||||
polygons = [ PoolIntArray( 0, 9, 1 ), PoolIntArray( 8, 1, 9 ), PoolIntArray( 8, 2, 1 ), PoolIntArray( 8, 2, 3, 4, 5, 6, 7 ) ]
|
||||
|
||||
[node name="BentStrawInversePolygon" type="Polygon2D" parent="."]
|
||||
visible = false
|
||||
material = ExtResource( 3 )
|
||||
position = Vector2( 5.15028, 0.0923641 )
|
||||
scale = Vector2( -0.807856, 1 )
|
||||
texture = SubResource( 9 )
|
||||
polygon = PoolVector2Array( 1.00644, 12.0961, 1.03124, 8.84688, 2.2466, 7.82995, 4.05723, 5.74649, 5.89266, 5.69688, 7.8273, 5.79609, 8.47219, 6.21775, 8.4375, 7.4375, 5.49581, 9.39255, 4.03242, 12.0465 )
|
||||
uv = PoolVector2Array( 0.562501, 11.875, 0.875001, 8.5625, 2.25, 6.375, 4.5, 3.9375, 6.125, 3.1875, 8.25, 3.5, 9.0625, 4.4375, 9.1875, 6.3125, 6.125, 9.25, 4.5625, 11.875 )
|
||||
polygons = [ PoolIntArray( 0, 9, 1 ), PoolIntArray( 8, 1, 9 ), PoolIntArray( 8, 2, 1 ), PoolIntArray( 8, 2, 3, 4, 5, 6, 7 ) ]
|
||||
|
||||
[node name="StraigtStrawPolygon" type="Polygon2D" parent="."]
|
||||
material = ExtResource( 3 )
|
||||
position = Vector2( -0.57621, 0.03125 )
|
||||
texture = SubResource( 2 )
|
||||
polygon = PoolVector2Array( 4.8599, 12.1162, 4.84375, 7.21094, 4.91575, 2.9375, 5.84277, 2.85904, 5.84375, 1.88281, 6.96094, 1.90625, 6.999, 2.89845, 7.97825, 2.9375, 7.98438, 7.09375, 7.98528, 12.1279 )
|
||||
uv = PoolVector2Array( 4.47825, 12.125, 4.35325, 7.25, 4.41575, 2.6875, 5.66575, 2.5625, 5.66575, 1.3125, 7.16575, 1.3125, 7.22825, 2.5625, 8.54075, 2.625, 8.54075, 7.1875, 8.47825, 12.3125 )
|
||||
polygons = [ PoolIntArray( 0, 9, 1 ), PoolIntArray( 8, 1, 9 ), PoolIntArray( 8, 2, 1 ), PoolIntArray( 8, 2, 3, 4, 5, 6, 7 ) ]
|
||||
|
||||
[node name="Timer" type="Timer" parent="."]
|
||||
wait_time = 4.0
|
||||
one_shot = true
|
||||
16
src/Environment/ShaderGrassInverse.gdshader
Normal file
16
src/Environment/ShaderGrassInverse.gdshader
Normal file
@ -0,0 +1,16 @@
|
||||
shader_type canvas_item;
|
||||
|
||||
uniform vec2 player_pos = vec2(0);
|
||||
uniform vec2 world_offset = vec2(0);
|
||||
uniform float interact_power = 8;
|
||||
uniform float radius = 30;
|
||||
|
||||
void vertex() {
|
||||
vec2 world_vert = VERTEX + world_offset; // model space to world space
|
||||
vec2 direction = world_vert - player_pos;
|
||||
direction.y = 0.0;
|
||||
direction = normalize(direction);
|
||||
float dist = distance(player_pos, world_vert);
|
||||
float power = smoothstep(radius, 0.0, dist);
|
||||
VERTEX -= direction * power * interact_power * (1.0 - UV.y);
|
||||
}
|
||||
@ -8,7 +8,7 @@
|
||||
[ext_resource path="res://src/NeutralObjects/Coin.tscn" type="PackedScene" id=6]
|
||||
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=7]
|
||||
[ext_resource path="res://src/Contraptions/Triggers/ThreeWhyButtons.tscn" type="PackedScene" id=8]
|
||||
[ext_resource path="res://src/Levels/Enemy Test Level.tscn" type="PackedScene" id=9]
|
||||
[ext_resource path="res://src/Levels/Grass Test Level.tscn" type="PackedScene" id=9]
|
||||
[ext_resource path="res://src/Utilities/GameplaySignalManager.gd" type="Script" id=10]
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=4]
|
||||
333
src/Levels/Grass Test Level.tscn
Normal file
333
src/Levels/Grass Test Level.tscn
Normal file
@ -0,0 +1,333 @@
|
||||
[gd_scene load_steps=12 format=2]
|
||||
|
||||
[ext_resource path="res://src/Environment/AlienShipTileSet.tres" type="TileSet" id=1]
|
||||
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=2]
|
||||
[ext_resource path="res://src/Environment/ShaderGrass.tscn" type="PackedScene" id=3]
|
||||
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=4]
|
||||
[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=5]
|
||||
[ext_resource path="res://src/NeutralObjects/Coin.tscn" type="PackedScene" id=6]
|
||||
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=7]
|
||||
[ext_resource path="res://src/Contraptions/Triggers/ThreeWhyButtons.tscn" type="PackedScene" id=8]
|
||||
[ext_resource path="res://src/Levels/Enemy Test Level.tscn" type="PackedScene" id=9]
|
||||
[ext_resource path="res://src/Utilities/GameplaySignalManager.gd" type="Script" id=10]
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=4]
|
||||
|
||||
[node name="LevelTemplate" type="Node2D"]
|
||||
__meta__ = {
|
||||
"_edit_horizontal_guides_": [ 464.0 ],
|
||||
"_edit_vertical_guides_": [ 2880.0 ]
|
||||
}
|
||||
|
||||
[node name="UserInterface" parent="." instance=ExtResource( 7 )]
|
||||
|
||||
[node name="Timer" parent="UserInterface/HUD/HUDOverlay/GetBackTimer" index="0"]
|
||||
wait_time = 20.0
|
||||
|
||||
[node name="PauseScreen" parent="UserInterface" index="1"]
|
||||
margin_left = 3.15372
|
||||
margin_top = 0.456848
|
||||
margin_right = 3.15375
|
||||
margin_bottom = 0.456848
|
||||
|
||||
[node name="Blobby" parent="." instance=ExtResource( 2 )]
|
||||
position = Vector2( 71.0069, 335.293 )
|
||||
scale = Vector2( 0.878906, 0.936025 )
|
||||
|
||||
[node name="AnimationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||
parameters/playback = SubResource( 4 )
|
||||
|
||||
[node name="Collectibles" type="Node2D" parent="."]
|
||||
visible = false
|
||||
|
||||
[node name="Coin" parent="Collectibles" instance=ExtResource( 6 )]
|
||||
position = Vector2( 336, -60 )
|
||||
scale = Vector2( 0.133, 0.133 )
|
||||
|
||||
[node name="Coin2" parent="Collectibles" instance=ExtResource( 6 )]
|
||||
position = Vector2( 324, -11 )
|
||||
scale = Vector2( 0.133, 0.133 )
|
||||
|
||||
[node name="Coin3" parent="Collectibles" instance=ExtResource( 6 )]
|
||||
position = Vector2( 1188, -84 )
|
||||
scale = Vector2( 0.133, 0.133 )
|
||||
|
||||
[node name="Coin4" parent="Collectibles" instance=ExtResource( 6 )]
|
||||
position = Vector2( 1236, -108 )
|
||||
scale = Vector2( 0.133, 0.133 )
|
||||
|
||||
[node name="Coin5" parent="Collectibles" instance=ExtResource( 6 )]
|
||||
position = Vector2( 1140, -108 )
|
||||
scale = Vector2( 0.133, 0.133 )
|
||||
|
||||
[node name="Coin6" parent="Collectibles" instance=ExtResource( 6 )]
|
||||
position = Vector2( 696, -48 )
|
||||
scale = Vector2( 0.133, 0.133 )
|
||||
|
||||
[node name="TileMap" type="TileMap" parent="."]
|
||||
tile_set = ExtResource( 1 )
|
||||
cell_size = Vector2( 24, 24 )
|
||||
cell_quadrant_size = 3
|
||||
cell_custom_transform = Transform2D( 24, 0, 0, 24, 0, 0 )
|
||||
collision_layer = 8
|
||||
collision_mask = 8
|
||||
format = 1
|
||||
tile_data = PoolIntArray( 655360, 2, 0, 655361, 2, 0, 655362, 2, 0, 655363, 2, 0, 655364, 2, 0, 655365, 2, 0, 655366, 2, 0, 655367, 2, 0, 655368, 2, 0, 720896, 2, 0, 720904, 2, 0, 786432, 2, 0, 786440, 2, 0, 851968, 2, 0, 851976, 2, 0, 917504, 2, 0, 917505, 2, 0, 917506, 2, 0, 917507, 2, 0, 917508, 2, 0, 917509, 2, 0, 917510, 2, 0, 917511, 2, 0, 917512, 2, 0 )
|
||||
|
||||
[node name="TreeWhyButtons" parent="." instance=ExtResource( 8 )]
|
||||
visible = false
|
||||
position = Vector2( -108, -7 )
|
||||
|
||||
[node name="WhyButton1" parent="TreeWhyButtons" index="0"]
|
||||
position = Vector2( -12, -49 )
|
||||
rotation = 1.5708
|
||||
|
||||
[node name="WhyButton2" parent="TreeWhyButtons" index="1"]
|
||||
position = Vector2( 444, -17 )
|
||||
rotation = 3.14159
|
||||
|
||||
[node name="WhyButton3" parent="TreeWhyButtons" index="2"]
|
||||
position = Vector2( 1452, -77 )
|
||||
rotation = -1.5708
|
||||
|
||||
[node name="ElevatorButton" parent="." instance=ExtResource( 4 )]
|
||||
visible = false
|
||||
position = Vector2( 1452, -96 )
|
||||
|
||||
[node name="Portal" parent="ElevatorButton" instance=ExtResource( 5 )]
|
||||
visible = false
|
||||
position = Vector2( -1464, 84 )
|
||||
monitoring = false
|
||||
next_scene = ExtResource( 9 )
|
||||
|
||||
[node name="GameplaySignalManager" type="Node2D" parent="."]
|
||||
script = ExtResource( 10 )
|
||||
|
||||
[node name="ShaderGrass" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 94.3273, 323.897 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass2" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 97.7583, 323.726 )
|
||||
|
||||
[node name="ShaderGrass3" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 103.443, 323.813 )
|
||||
|
||||
[node name="ShaderGrass4" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 99.556, 322.393 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass5" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 107.485, 323.87 )
|
||||
|
||||
[node name="ShaderGrass6" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 104.781, 322.084 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass7" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 118.829, 323.704 )
|
||||
|
||||
[node name="ShaderGrass8" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 112.732, 323.918 )
|
||||
|
||||
[node name="ShaderGrass9" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 110.33, 321.607 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass10" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 122.514, 323.848 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass11" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 125.945, 323.677 )
|
||||
|
||||
[node name="ShaderGrass12" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 131.629, 323.764 )
|
||||
|
||||
[node name="ShaderGrass13" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 127.742, 322.345 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass14" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 135.671, 323.821 )
|
||||
|
||||
[node name="ShaderGrass15" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 132.967, 322.035 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass16" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 147.015, 323.655 )
|
||||
|
||||
[node name="ShaderGrass17" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 140.918, 323.869 )
|
||||
|
||||
[node name="ShaderGrass18" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 138.516, 321.559 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass19" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 149.723, 323.897 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass20" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 153.154, 323.726 )
|
||||
|
||||
[node name="ShaderGrass21" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 158.839, 323.813 )
|
||||
|
||||
[node name="ShaderGrass22" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 154.952, 322.393 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass23" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 162.881, 323.87 )
|
||||
|
||||
[node name="ShaderGrass24" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 160.177, 322.084 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass25" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 174.225, 323.704 )
|
||||
|
||||
[node name="ShaderGrass26" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 168.128, 323.918 )
|
||||
|
||||
[node name="ShaderGrass27" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 165.726, 321.607 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass28" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 64.794, 323.73 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass29" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 68.225, 323.559 )
|
||||
|
||||
[node name="ShaderGrass30" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 73.9096, 323.646 )
|
||||
|
||||
[node name="ShaderGrass31" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 70.0227, 322.227 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass32" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 77.9516, 323.703 )
|
||||
|
||||
[node name="ShaderGrass33" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 75.2476, 321.917 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass34" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 89.2956, 323.538 )
|
||||
|
||||
[node name="ShaderGrass35" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 83.1986, 323.751 )
|
||||
|
||||
[node name="ShaderGrass36" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 80.7966, 321.441 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass37" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 39.2652, 323.564 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass38" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 42.6962, 323.393 )
|
||||
|
||||
[node name="ShaderGrass39" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 48.3808, 323.48 )
|
||||
|
||||
[node name="ShaderGrass40" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 44.4939, 322.06 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass41" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 52.4228, 323.537 )
|
||||
|
||||
[node name="ShaderGrass42" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 49.7188, 321.751 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass43" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 63.7668, 323.371 )
|
||||
|
||||
[node name="ShaderGrass44" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 57.6698, 323.585 )
|
||||
|
||||
[node name="ShaderGrass45" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 55.2678, 321.274 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass46" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 17.2403, 323.73 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass47" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 20.6713, 323.559 )
|
||||
|
||||
[node name="ShaderGrass48" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 26.3559, 323.646 )
|
||||
|
||||
[node name="ShaderGrass49" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 22.469, 322.227 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass50" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 30.3979, 323.703 )
|
||||
|
||||
[node name="ShaderGrass51" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 27.6939, 321.917 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass52" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 41.7419, 323.538 )
|
||||
|
||||
[node name="ShaderGrass53" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 35.6449, 323.751 )
|
||||
|
||||
[node name="ShaderGrass54" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 33.2429, 321.441 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass55" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 166.242, 323.73 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass56" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 169.673, 323.559 )
|
||||
|
||||
[node name="ShaderGrass57" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 175.357, 323.646 )
|
||||
|
||||
[node name="ShaderGrass58" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 171.471, 322.227 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass59" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 179.399, 323.703 )
|
||||
|
||||
[node name="ShaderGrass60" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 176.695, 321.917 )
|
||||
z_index = -1
|
||||
|
||||
[node name="ShaderGrass61" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 190.743, 323.538 )
|
||||
|
||||
[node name="ShaderGrass62" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 184.646, 323.751 )
|
||||
|
||||
[node name="ShaderGrass63" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 182.244, 321.441 )
|
||||
z_index = -1
|
||||
|
||||
[connection signal="timeout" from="UserInterface/HUD/HUDOverlay/GetBackTimer/Timer" to="GameplaySignalManager" method="_on_Timer_timeout"]
|
||||
[connection signal="getback_timer_up" from="GameplaySignalManager" to="Blobby" method="_on_GameplaySignalManager_getback_timer_up"]
|
||||
[connection signal="terminal_activated" from="GameplaySignalManager" to="UserInterface/HUD" method="_on_SignalManager_terminal_activated"]
|
||||
|
||||
[editable path="UserInterface"]
|
||||
[editable path="UserInterface/HUD"]
|
||||
[editable path="Blobby"]
|
||||
[editable path="TreeWhyButtons"]
|
||||
[editable path="TreeWhyButtons/WhyButton1"]
|
||||
[editable path="TreeWhyButtons/WhyButton2"]
|
||||
[editable path="TreeWhyButtons/WhyButton3"]
|
||||
@ -52,7 +52,7 @@ size_flags_horizontal = 3
|
||||
[node name="PlayButton" parent="MenuContainer/Buttons" instance=ExtResource( 3 )]
|
||||
margin_right = 296.0
|
||||
margin_bottom = 48.0
|
||||
next_scene_path = "res://src/Levels/Enemy Test Level.tscn"
|
||||
next_scene_path = "res://src/Levels/01 Level.tscn"
|
||||
|
||||
[node name="QuitButton" parent="MenuContainer/Buttons" instance=ExtResource( 1 )]
|
||||
anchor_left = 0.0
|
||||
|
||||
Loading…
Reference in New Issue
Block a user