feat: thwomp improvements
This commit is contained in:
parent
fab18d3a98
commit
c02296721a
BIN
assets/Main Ship - Base - Very damaged.png
Normal file
BIN
assets/Main Ship - Base - Very damaged.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 989 B |
35
assets/Main Ship - Base - Very damaged.png.import
Normal file
35
assets/Main Ship - Base - Very damaged.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/Main Ship - Base - Very damaged.png-926168939abe4d38178928ec91f12a7c.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/Main Ship - Base - Very damaged.png"
|
||||
dest_files=[ "res://.import/Main Ship - Base - Very damaged.png-926168939abe4d38178928ec91f12a7c.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.
Binary file not shown.
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.9 KiB |
BIN
assets/contraption/PixelPortal.aseprite
Normal file
BIN
assets/contraption/PixelPortal.aseprite
Normal file
Binary file not shown.
BIN
assets/contraption/PixelPortal.png
Normal file
BIN
assets/contraption/PixelPortal.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 938 B |
35
assets/contraption/PixelPortal.png.import
Normal file
35
assets/contraption/PixelPortal.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/PixelPortal.png-6516e8317c3e4aff451056cc71fdb2fa.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/contraption/PixelPortal.png"
|
||||
dest_files=[ "res://.import/PixelPortal.png-6516e8317c3e4aff451056cc71fdb2fa.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/background/asset-test-background.png
Normal file
BIN
assets/environment/background/asset-test-background.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.1 KiB |
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/asset-test-background.png-bd588dd8a6fda7f7a728a8204d88f193.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/environment/background/asset-test-background.png"
|
||||
dest_files=[ "res://.import/asset-test-background.png-bd588dd8a6fda7f7a728a8204d88f193.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
|
||||
@ -30,7 +30,7 @@ var max_velocity := {
|
||||
"duck_walk": 165
|
||||
}
|
||||
# x is applied directly to velocity and y is multiplied with acceleration
|
||||
var duck_boost = Vector2(2.5, 0.75)
|
||||
var duck_boost = Vector2(2, 0.75)
|
||||
var velocity_jump_boost_ratio := 10
|
||||
# This is added to the acceleration force initially
|
||||
var init_acceleration_force := {"": 0, "idle_walk": 4181, "idle_run": 5765, "walk_run": 1000}
|
||||
|
||||
@ -4343,6 +4343,7 @@ __meta__ = {
|
||||
}
|
||||
|
||||
[node name="StateLabel" type="Label" parent="."]
|
||||
visible = false
|
||||
show_behind_parent = true
|
||||
margin_left = -37.0
|
||||
margin_top = -44.0
|
||||
|
||||
@ -484,7 +484,6 @@ position = Vector2( 0, -7 )
|
||||
texture = ExtResource( 1 )
|
||||
hframes = 2
|
||||
vframes = 4
|
||||
frame = 1
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="FrogSprite"]
|
||||
anims/RESET = SubResource( 5 )
|
||||
|
||||
@ -6,8 +6,10 @@ func play_scene_independent(sound_name: String, bus: String = "Master", attenuat
|
||||
singleton = false, start_time = 0.0, random_pitch = false, pitch = 1.0) -> void:
|
||||
if singleton && players.has(sound_name):
|
||||
return
|
||||
var disposable_player = AudioStreamPlayer.new()
|
||||
var disposable_player
|
||||
disposable_player = AudioStreamPlayer.new()
|
||||
add_child(disposable_player)
|
||||
disposable_player.connect("finished", self, "dispose_player", [weakref(disposable_player)])
|
||||
var stream = GlobalState.sound_library[sound_name]
|
||||
if random_pitch:
|
||||
stream = AudioStreamRandomPitch.new()
|
||||
@ -17,12 +19,19 @@ func play_scene_independent(sound_name: String, bus: String = "Master", attenuat
|
||||
disposable_player.bus = bus
|
||||
disposable_player.pitch_scale = pitch
|
||||
disposable_player.play(start_time)
|
||||
disposable_player.connect("finished", self, "dispose_player", [weakref(disposable_player)])
|
||||
players[sound_name] = weakref(disposable_player)
|
||||
|
||||
func dispose_player(player: WeakRef) -> void:
|
||||
if !player.get_ref(): return
|
||||
player.get_ref().queue_free()
|
||||
var p = player.get_ref()
|
||||
var sound_name
|
||||
if("audio_stream" in p.stream):
|
||||
sound_name = p.stream.audio_stream.resource_path
|
||||
else:
|
||||
sound_name = p.stream.resource_path
|
||||
if players.has(sound_name):
|
||||
players.erase(sound_name)
|
||||
p.queue_free()
|
||||
|
||||
func pause_scene_independent(sound_name: String):
|
||||
if players.has(sound_name) && players[sound_name].get_ref():
|
||||
|
||||
@ -7,7 +7,14 @@ onready var signal_manager := get_tree().root.get_child(4).get_node("%SignalMana
|
||||
onready var levelName := get_tree().get_current_scene().get_name()
|
||||
|
||||
export(String, FILE, "*.tscn") var next_scene
|
||||
export(bool) var is_active
|
||||
|
||||
func _ready() -> void:
|
||||
if(!is_active):
|
||||
monitoring = false
|
||||
signal_manager.connect("terminal_activated", self, "activate_portal")
|
||||
else:
|
||||
$portal.frame = 0
|
||||
|
||||
func _get_configuration_warning() -> String:
|
||||
return "The next scene property can't be empty" if not next_scene else ""
|
||||
@ -15,7 +22,10 @@ func _get_configuration_warning() -> String:
|
||||
func level_completion() -> void:
|
||||
GlobalState.remove_savepoint(levelName)
|
||||
signal_manager.emit_signal("level_completed")
|
||||
|
||||
|
||||
func activate_portal(_time: float) -> void:
|
||||
$AnimationPlayer.play("activatePortal")
|
||||
monitoring = true
|
||||
|
||||
func teleport() -> void:
|
||||
GlobalAudio.play_scene_independent("res://assets/sounds/MAGIC_SPELL_Morphing_Synth_Harp_Scales_stereo.wav", "Music", -15)
|
||||
|
||||
@ -1,11 +1,10 @@
|
||||
[gd_scene load_steps=7 format=2]
|
||||
|
||||
[ext_resource path="res://assets/contraption/portal.png" type="Texture" id=1]
|
||||
[ext_resource path="res://assets/contraption/PixelPortal.png" type="Texture" id=1]
|
||||
[ext_resource path="res://src/Contraptions/Portal/Portal.gd" type="Script" id=2]
|
||||
[ext_resource path="res://src/UserInterface/Screens/InGameMenu/LevelEndScreen.tscn" type="PackedScene" id=3]
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id=1]
|
||||
radius = 22.1169
|
||||
radius = 40.0
|
||||
height = 22.4675
|
||||
|
||||
[sub_resource type="Animation" id=2]
|
||||
@ -35,6 +34,22 @@ tracks/1/keys = {
|
||||
"values": [ false ]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id=4]
|
||||
resource_name = "activatePortal"
|
||||
length = 2.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath("portal:frame")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/keys = {
|
||||
"times": PoolRealArray( 0, 0.7, 1.3, 1.8 ),
|
||||
"transitions": PoolRealArray( 1, 1, 1, 1 ),
|
||||
"update": 1,
|
||||
"values": [ 3, 2, 1, 0 ]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id=3]
|
||||
resource_name = "fade_in"
|
||||
tracks/0/type = "value"
|
||||
@ -64,15 +79,18 @@ tracks/1/keys = {
|
||||
|
||||
[node name="Portal" type="Area2D"]
|
||||
pause_mode = 2
|
||||
z_index = -1
|
||||
z_as_relative = false
|
||||
collision_layer = 0
|
||||
monitorable = false
|
||||
script = ExtResource( 2 )
|
||||
next_scene = ExtResource( 3 )
|
||||
next_scene = "res://src/Levels/Level 1.tscn"
|
||||
|
||||
[node name="portal" type="Sprite" parent="."]
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
texture = ExtResource( 1 )
|
||||
hframes = 2
|
||||
vframes = 2
|
||||
frame = 3
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
scale = Vector2( 0.3, 0.3 )
|
||||
@ -86,13 +104,11 @@ visible = false
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 600.0
|
||||
color = Color( 0, 0, 0, 0 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
autoplay = "Start"
|
||||
anims/Start = SubResource( 2 )
|
||||
anims/activatePortal = SubResource( 4 )
|
||||
anims/fade_in = SubResource( 3 )
|
||||
|
||||
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
||||
|
||||
@ -13,8 +13,6 @@ var activatable = false
|
||||
|
||||
func _ready() -> void:
|
||||
get_back_timer.wait_time = elevator_time
|
||||
elevator.get_node("./portal").frame = 1
|
||||
elevator.monitoring = false
|
||||
|
||||
func _input(event: InputEvent) -> void:
|
||||
if activatable && Input.is_action_just_released("interact"):
|
||||
@ -26,8 +24,6 @@ func _input(event: InputEvent) -> void:
|
||||
func selfActivate():
|
||||
indicatorPlayer.play("onning")
|
||||
buttonPlayer.play("pushing")
|
||||
elevator.get_node("./portal").frame = 0
|
||||
elevator.monitoring = true
|
||||
#TODO dis importante
|
||||
activatorArea.set_deferred("monitoring", false)
|
||||
$GetBackMusic.play()
|
||||
|
||||
@ -19,6 +19,9 @@ var is_idle_swinging
|
||||
var start_swing_time := 0.0
|
||||
var begin_idle
|
||||
var time_since_last_exec := 0.0
|
||||
|
||||
var grass_sounds := ["res://assets/sounds/grass swish 1.ogg","res://assets/sounds/grass swish 2.ogg",
|
||||
"res://assets/sounds/grass swish 3.ogg","res://assets/sounds/grass swish 4.ogg"]
|
||||
# var thread : Thread
|
||||
|
||||
var saved_coeff:= 0.0
|
||||
@ -107,4 +110,8 @@ func grass_wave_update(delta: float) -> void:
|
||||
|
||||
|
||||
func _on_Area2D_body_entered(body: Node) -> void:
|
||||
$AudioStreamPlayer2D.play()
|
||||
var sound_index = round(rand_range(0,grass_sounds.size())) - 1
|
||||
if(body.is_in_group("player")):
|
||||
GlobalAudio.play_scene_independent(grass_sounds[sound_index], "Effects", -22, true, 0, true, 1)
|
||||
else:
|
||||
$AudioStreamPlayer2D.play()
|
||||
|
||||
@ -78,6 +78,7 @@ uv = PoolVector2Array( 4.9375, 11.875, 5, 8.8125, 2.8125, 7, -0.375, 4.0625, 2.2
|
||||
polygons = [ PoolIntArray( 0, 6, 7 ), PoolIntArray( 0, 1, 6 ), PoolIntArray( 1, 5, 6 ), PoolIntArray( 1, 2, 5 ), PoolIntArray( 2, 4, 5 ), PoolIntArray( 2, 3, 4 ) ]
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="."]
|
||||
visible = false
|
||||
position = Vector2( 5.00909, 19.9567 )
|
||||
z_index = -1
|
||||
texture = ExtResource( 10 )
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1150,6 +1150,9 @@ unique_name_in_owner = true
|
||||
position = Vector2( -156, -51 )
|
||||
scale = Vector2( 0.878906, 0.936025 )
|
||||
|
||||
[node name="BlobbySprite" parent="Blobby" index="5"]
|
||||
frame = 6
|
||||
|
||||
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||
parameters/playback = SubResource( 6 )
|
||||
parameters/jumpStretching/blend_position = 1
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -4,20 +4,23 @@ extends Node2D
|
||||
# Declare member variables here. Examples:
|
||||
# var a: int = 2
|
||||
# var b: String = "text"
|
||||
export var is_locked = true
|
||||
export var is_armed = false
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
$Area2D.remove_from_group("harmful")
|
||||
$Sprite/AnimationPlayer.play("unarmed")
|
||||
|
||||
if(!is_armed):
|
||||
$Area2D.remove_from_group("harmful")
|
||||
$Sprite/AnimationPlayer.play("unarmed")
|
||||
else:
|
||||
$Area2D.add_to_group("harmful")
|
||||
$Sprite/AnimationPlayer.play("armed")
|
||||
|
||||
func _on_Area2D_area_exited(area: Area2D) -> void:
|
||||
$Timer.start()
|
||||
|
||||
|
||||
func _on_Timer_timeout() -> void:
|
||||
is_locked = true
|
||||
is_armed = true
|
||||
$Area2D.add_to_group("harmful")
|
||||
$Sprite/AnimationPlayer.play("arming")
|
||||
|
||||
|
||||
@ -10,10 +10,13 @@ onready var slide_friction = 1.5
|
||||
|
||||
var flyoff_triggered = false
|
||||
var has_hit_player = false
|
||||
var velocity = 1
|
||||
var max_velocity = 200
|
||||
var acceleration_force = 1200
|
||||
var mass = 10
|
||||
var halted = false
|
||||
export(float) var velocity = 1
|
||||
export(float) var max_velocity = 200
|
||||
export(float) var acceleration_force = 1200
|
||||
export(float) var mass = 10
|
||||
export(bool) var avoid_crushing = false
|
||||
export(bool) var fast_retrigger = false
|
||||
|
||||
# TODO Returing Laser cutter has broken collision and infinite inertia
|
||||
# Maybe keep returning paths free and crush player when in the way
|
||||
@ -23,18 +26,21 @@ func _ready() -> void:
|
||||
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
|
||||
if !flyoff_triggered:
|
||||
for ray in trigger_rays:
|
||||
# When player has been hit on the way
|
||||
if (has_hit_player && body.position.x > 0):
|
||||
break
|
||||
if ray.is_colliding():
|
||||
if ray.is_colliding() && (body.position.x < 1 || fast_retrigger):
|
||||
var collider = ray.get_collider()
|
||||
if collider.is_in_group("player"):
|
||||
flyoff_triggered = true
|
||||
body.set("motion/sync_to_physics", false)
|
||||
break
|
||||
if body.position.x > 0:
|
||||
if halted && avoid_crushing:
|
||||
return
|
||||
velocity=1
|
||||
body.position.x += (max_velocity/3)*-1*delta
|
||||
elif body.position.x == 0:
|
||||
@ -51,3 +57,13 @@ func _physics_process(delta: float) -> void:
|
||||
else:
|
||||
has_hit_player = true
|
||||
flyoff_triggered = false
|
||||
|
||||
|
||||
func _on_BackArea_body_entered(body: Node) -> void:
|
||||
if(body.is_in_group("player")):
|
||||
halted = true
|
||||
|
||||
|
||||
func _on_BackArea_body_exited(body: Node) -> void:
|
||||
if(body.is_in_group("player")):
|
||||
halted = false
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=6 format=2]
|
||||
[gd_scene load_steps=7 format=2]
|
||||
|
||||
[ext_resource path="res://assets/contraption/FlyingLaserCutterShaded.png" type="Texture" id=1]
|
||||
[ext_resource path="res://src/Platforms/FlyingLaserCutter.gd" type="Script" id=2]
|
||||
@ -25,6 +25,9 @@ extents = Vector2( 11.4921, 11.9129 )
|
||||
[sub_resource type="RectangleShape2D" id=4]
|
||||
extents = Vector2( 3.067, 10 )
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=5]
|
||||
extents = Vector2( 0.5, 11 )
|
||||
|
||||
[node name="FlyingLaserCutter" type="Node2D"]
|
||||
script = ExtResource( 2 )
|
||||
|
||||
@ -32,6 +35,7 @@ script = ExtResource( 2 )
|
||||
collision_layer = 32
|
||||
collision_mask = 57
|
||||
collision/safe_margin = 0.001
|
||||
motion/sync_to_physics = true
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="FlyingLaserCutterBody"]
|
||||
texture = ExtResource( 1 )
|
||||
@ -51,14 +55,25 @@ shape = SubResource( 3 )
|
||||
|
||||
[node name="LaserArea" type="Area2D" parent="FlyingLaserCutterBody" groups=["harmful"]]
|
||||
process_priority = -1
|
||||
position = Vector2( 10, 0 )
|
||||
collision_layer = 32
|
||||
collision_mask = 3
|
||||
|
||||
[node name="PainZone" type="CollisionShape2D" parent="FlyingLaserCutterBody/LaserArea" groups=["harmful"]]
|
||||
process_priority = -1
|
||||
position = Vector2( 9.647, 0 )
|
||||
position = Vector2( -9.53674e-07, 0 )
|
||||
shape = SubResource( 4 )
|
||||
|
||||
[node name="BackArea" type="Area2D" parent="FlyingLaserCutterBody"]
|
||||
position = Vector2( -11.5, 0 )
|
||||
collision_layer = 16
|
||||
collision_mask = 3
|
||||
monitorable = false
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="FlyingLaserCutterBody/BackArea"]
|
||||
position = Vector2( -1, 0 )
|
||||
shape = SubResource( 5 )
|
||||
|
||||
[node name="Triggers" type="Node2D" parent="FlyingLaserCutterBody"]
|
||||
visible = false
|
||||
position = Vector2( 0, 0.0077219 )
|
||||
@ -78,3 +93,6 @@ scale = Vector2( 1, 1000 )
|
||||
enabled = true
|
||||
cast_to = Vector2( 0, 1 )
|
||||
collision_mask = 9
|
||||
|
||||
[connection signal="body_entered" from="FlyingLaserCutterBody/BackArea" to="." method="_on_BackArea_body_entered"]
|
||||
[connection signal="body_exited" from="FlyingLaserCutterBody/BackArea" to="." method="_on_BackArea_body_exited"]
|
||||
|
||||
@ -41,12 +41,12 @@ resource_name = "LowPassFilter"
|
||||
cutoff_hz = 3000.0
|
||||
|
||||
[resource]
|
||||
bus/0/volume_db = inf_neg
|
||||
bus/0/volume_db = -6.0206
|
||||
bus/1/name = "Music"
|
||||
bus/1/solo = false
|
||||
bus/1/mute = false
|
||||
bus/1/bypass_fx = false
|
||||
bus/1/volume_db = 0.0
|
||||
bus/1/volume_db = -6.0206
|
||||
bus/1/send = "Master"
|
||||
bus/1/effect/0/effect = SubResource( 1 )
|
||||
bus/1/effect/0/enabled = false
|
||||
|
||||
4
src/ThirdParty/Demo/meshinstance.gd
vendored
4
src/ThirdParty/Demo/meshinstance.gd
vendored
@ -2,5 +2,5 @@ extends MeshInstance
|
||||
|
||||
|
||||
func _process(delta):
|
||||
if(get_parent().visible):
|
||||
rotate_y(PI / 4.0 * delta)
|
||||
if(get_parent().visible):
|
||||
rotate_y(PI / 4.0 * delta)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user