diff --git a/src/Actors/Enemies/Spider/Spider.tscn b/src/Actors/Enemies/Spider/Spider.tscn index 13f4305..4b7450b 100644 --- a/src/Actors/Enemies/Spider/Spider.tscn +++ b/src/Actors/Enemies/Spider/Spider.tscn @@ -1,8 +1,10 @@ -[gd_scene load_steps=12 format=2] +[gd_scene load_steps=14 format=2] [ext_resource path="res://src/templates/Actor/ActorTemplate.tscn" type="PackedScene" id=1] -[ext_resource path="res://src/components/Hurtbox_Component.tscn" type="PackedScene" id=2] +[ext_resource path="res://src/components/Hitbox_Component.tscn" type="PackedScene" id=2] [ext_resource path="res://src/Actors/Enemies/Spider/spider_movement_component.gd" type="Script" id=3] +[ext_resource path="res://src/Actors/Enemies/Spider/states/move.gd" type="Script" id=4] +[ext_resource path="res://src/Actors/Enemies/Spider/states/idle.gd" type="Script" id=5] [sub_resource type="StreamTexture" id=1] load_path = "res://.import/Spider1.png-85cc52177a93c8766bb76a39a26b9d70.stex" @@ -52,11 +54,12 @@ extents = Vector2( 10, 12 ) [sub_resource type="CircleShape2D" id=8] [node name="Spider" instance=ExtResource( 1 )] +actor_type = "Enemy" [node name="AnimatedSprite" parent="." index="0"] frames = SubResource( 6 ) -animation = "idle" -frame = 0 +animation = "jump" +frame = 2 __meta__ = { "_aseprite_wizard_config_": { "layer": "", @@ -73,12 +76,22 @@ __meta__ = { [node name="movement_component" parent="." index="1"] script = ExtResource( 3 ) +[node name="movement_state_machine" parent="." index="2"] +debug_state_machine = true + [node name="idle" parent="movement_state_machine" index="0"] +script = ExtResource( 5 ) +timeout_seconds = 0.5 animation_sequence = [ "idle" ] [node name="fall" parent="movement_state_machine" index="1"] animation_sequence = [ "land" ] +[node name="move" parent="movement_state_machine" index="2"] +script = ExtResource( 4 ) +animation_sequence = [ "jump" ] +jump_force = 200.0 + [node name="CollisionShape2D" parent="Hurtbox_Component" index="0"] position = Vector2( 0, -1 ) @@ -89,10 +102,11 @@ shape = SubResource( 7 ) [node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="." index="6"] position = Vector2( 0, 1 ) -[node name="Hurtbox_Component2" parent="." index="7" instance=ExtResource( 2 )] +[node name="Hitbox_Component" parent="." index="7" instance=ExtResource( 2 )] +damage_amount = 5 -[node name="CollisionShape2D" type="CollisionShape2D" parent="Hurtbox_Component2" index="0"] -modulate = Color( 1, 0, 0, 1 ) +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox_Component" index="0"] +position = Vector2( 0, -1 ) shape = SubResource( 8 ) [connection signal="screen_entered" from="VisibilityNotifier2D" to="movement_component" method="_on_VisibilityNotifier2D_screen_entered"] diff --git a/src/Actors/Enemies/Spider/spider_movement_component.gd b/src/Actors/Enemies/Spider/spider_movement_component.gd index 16b5c1f..48bedc9 100644 --- a/src/Actors/Enemies/Spider/spider_movement_component.gd +++ b/src/Actors/Enemies/Spider/spider_movement_component.gd @@ -17,11 +17,18 @@ extends MovementComponent var entered_screen = false var jump_var = false +var last_player_direction: float + func process(delta): if entered_screen: if current_movement_state == "idle": + # Only check the player direction in idle because we don't want to track the player during jump + if owner is Actor: + last_player_direction = sign((owner.global_position.direction_to(PlayerInfo.player_position)).x) jump_var = true + desired_movement_vector.x = last_player_direction else: + desired_movement_vector.x = last_player_direction jump_var = false return @@ -57,3 +64,4 @@ func wants_jump() -> bool: func _on_VisibilityNotifier2D_screen_entered(): entered_screen = true + print("Spider wants to play!!!") diff --git a/src/Actors/Enemies/Spider/states/idle.gd b/src/Actors/Enemies/Spider/states/idle.gd new file mode 100644 index 0000000..5a2298c --- /dev/null +++ b/src/Actors/Enemies/Spider/states/idle.gd @@ -0,0 +1,26 @@ +extends "res://src/templates/Actor/states/idle.gd" + + +func enter() -> void: + .enter() +# parent.set_hurtbox(true) + move_component.velocity.x = 0 + state_timeout.start() + + +func process_physics(delta: float) -> State: + +# parent.velocity.y += gravity * delta +# #parent.velocity = parent.move_and_slide(parent.velocity, Vector2(0, -1)) +# parent.velocity.x = move_component.desired_movement_vector.x * move_speed +# parent.velocity = parent.move_and_slide(parent.velocity, Vector2(0, -1)) + + if state_timeout.time_left == 0: + move_actor_as_desired(delta) + + if move_component.velocity.x != 0.0: + return move_state + + if !parent.is_on_floor(): + return fall_state + return null diff --git a/src/Actors/Enemies/Spider/states/move.gd b/src/Actors/Enemies/Spider/states/move.gd new file mode 100644 index 0000000..fe38f3f --- /dev/null +++ b/src/Actors/Enemies/Spider/states/move.gd @@ -0,0 +1,36 @@ +extends "res://src/templates/Actor/states/move.gd" + +export var jump_force: float = 200.0 + +var landing_modifier: StateModifier + +func _ready(): + landing_modifier= StateModifier.new() + #add_child(modifier) + #modifier.init_ref() + landing_modifier.ready( "landing", "jump" , landing_modifier.TYPE.EXIT_ANIMATION) + #print("ready! MOD") + + +func enter() -> void: + .enter() + # Apply initial jump velocity on state enter + move_component.velocity.y = -jump_force + +func process_physics(delta: float) -> State: + +# if move_component.velocity.y > 0: +# return fall_state + + # First allow horizontal movement. + move_actor_as_desired(delta) + + #Flip the character before tha actual move maybe. + if move_component.get_movement_direction() != 0.0: + parent.transform.x.x = move_component.get_movement_direction() + + if parent.is_on_floor(): + idle_state.modifier = landing_modifier + return idle_state + + return null diff --git a/src/Actors/Platform/PlatformVMove/PlatformVMove.tscn b/src/Actors/Platform/PlatformVMove/PlatformVMove.tscn index 4f1a6ce..3591680 100644 --- a/src/Actors/Platform/PlatformVMove/PlatformVMove.tscn +++ b/src/Actors/Platform/PlatformVMove/PlatformVMove.tscn @@ -68,17 +68,12 @@ __meta__ = { position = Vector2( 0, -3.5 ) shape = SubResource( 9 ) -[node name="movement_state_machine" parent="." index="3"] -debug_state_machine = true - [node name="idle" parent="movement_state_machine" index="0"] script = ExtResource( 3 ) -debug_state = true timeout_seconds = 2.0 move_speed = 0.0 [node name="move" parent="movement_state_machine" index="2"] script = ExtResource( 2 ) -debug_state = true timeout_seconds = 1.0 move_speed = 30.0 diff --git a/src/Levels/Level.tscn b/src/Levels/Level.tscn index c907b2c..a3e852f 100644 --- a/src/Levels/Level.tscn +++ b/src/Levels/Level.tscn @@ -36,7 +36,7 @@ extents = Vector2( 8, 53 ) script = ExtResource( 10 ) [node name="PlayerStart" type="Position2D" parent="."] -position = Vector2( 316, 73 ) +position = Vector2( 1047, 111 ) [node name="CameraBoundaries" type="Area2D" parent="."] collision_layer = 256