diff --git a/maps/test_room.tscn b/maps/test_room.tscn index bdc2e6e..27bb806 100644 --- a/maps/test_room.tscn +++ b/maps/test_room.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=31 format=2] +[gd_scene load_steps=32 format=2] [ext_resource path="res://objects/enemy/squig.tscn" type="PackedScene" id=1] [ext_resource path="res://tilesets/t_cave.tres" type="TileSet" id=2] @@ -23,6 +23,7 @@ [ext_resource path="res://graphics/enemy/sawblade.png" type="Texture" id=21] [ext_resource path="res://objects/enemy/rolling_fiend.tscn" type="PackedScene" id=22] [ext_resource path="res://objects/enemy/steam.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/enemy/eel.tscn" type="PackedScene" id=24] [ext_resource path="res://objects/enemy/cop.tscn" type="PackedScene" id=25] [ext_resource path="res://objects/environment/turret/turret_bullet.tscn" type="PackedScene" id=26] [ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=27] @@ -209,4 +210,7 @@ left_up_boundary = 2.0 right_down_boundary = 4.0 speed = 10 +[node name="Eel" parent="." instance=ExtResource( 24 )] +position = Vector2( 120, 56 ) + [editable path="RollingFiend"] diff --git a/objects/enemy/eel.gd b/objects/enemy/eel.gd index e0bae7d..54756a7 100644 --- a/objects/enemy/eel.gd +++ b/objects/enemy/eel.gd @@ -14,9 +14,10 @@ export var wave_amplitude: float = 4.0 onready var sector: Vector2 = Game.get_sector(global_position) -onready var hitbox: Area2D = $Hitbox +onready var hitbox: Area2D = $Path2D/PathFollow2D/Hitbox onready var first_segment: CollisionShape2D = $"%Segment" onready var segment_start: Position2D = $"%SegmentStart" +onready var path_follow = $Path2D/PathFollow2D func _ready() -> void: @@ -25,12 +26,13 @@ func _ready() -> void: var new_segment = first_segment.duplicate() new_segment.position.x = segment_start.position.x + SEGMENT_LENGTH * float(i) hitbox.add_child(new_segment) - $Hitbox/TailShape.position.x = segment_start.position.x + SEGMENT_LENGTH * segments + $Path2D/PathFollow2D/Hitbox/TailShape.position.x = segment_start.position.x + SEGMENT_LENGTH * segments _wave_segments() func _physics_process(delta: float) -> void: # move - global_position.x += speed * delta * sign(scale.x) +# global_position.x += speed * delta * sign(scale.x) + path_follow.set_offset(path_follow.get_offset() + speed * delta) # make segments wibble _wave_segments() # check for wrapping diff --git a/objects/enemy/eel.tscn b/objects/enemy/eel.tscn index 4cd25e8..b244d17 100644 --- a/objects/enemy/eel.tscn +++ b/objects/enemy/eel.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=9 format=2] [ext_resource path="res://objects/enemy/eel.gd" type="Script" id=1] [ext_resource path="res://graphics/enemy/eel_head.png" type="Texture" id=2] @@ -6,6 +6,11 @@ [ext_resource path="res://graphics/enemy/eel_tail.png" type="Texture" id=4] [ext_resource path="res://graphics/enemy/eel_inner_border.png" type="Texture" id=5] +[sub_resource type="Curve2D" id=4] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -16, 0, 0, 0, 0, 64, -16, 0, 0, 0, 0, 104, -16, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 144, 24, 0, 0, 0, 0, 136, 48, 0, 0, 0, 0, 128, 56, 0, 0, 0, 0, 104, 64, 0, 0, 0, 0, 56, 72, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, 16, 56, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, -8, 32, 0, 0, 0, 0, -8, 16, 0, 0, 0, 0, -8, 16, 0, 0, 0, 0, -8, 8, 0, 0, 0, 0, 0, 0 ) +} + [sub_resource type="RectangleShape2D" id=3] extents = Vector2( 2, 2 ) @@ -17,62 +22,69 @@ script = ExtResource( 1 ) blood = false wave_amplitude = 6.0 -[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] -position = Vector2( 0, 4 ) -scale = Vector2( -1, 1 ) +[node name="Path2D" type="Path2D" parent="."] +curve = SubResource( 4 ) -[node name="SegmentStart" type="Position2D" parent="Hitbox"] +[node name="PathFollow2D" type="PathFollow2D" parent="Path2D"] +rotation = -0.463648 + +[node name="Hitbox" type="Area2D" parent="Path2D/PathFollow2D" groups=["enemy_hitbox"]] +position = Vector2( 7.99424, 0.405511 ) +rotation = 3.14159 +scale = Vector2( 1, -1 ) + +[node name="SegmentStart" type="Position2D" parent="Path2D/PathFollow2D/Hitbox"] unique_name_in_owner = true position = Vector2( 12, 0 ) __meta__ = { "_gizmo_extents_": 5.0 } -[node name="HeadShape" type="CollisionPolygon2D" parent="Hitbox"] +[node name="HeadShape" type="CollisionPolygon2D" parent="Path2D/PathFollow2D/Hitbox"] position = Vector2( 8, 0 ) polygon = PoolVector2Array( -7, -2, 2, -2, 2, 2, -7, 2 ) -[node name="HeadSprite" type="Sprite" parent="Hitbox/HeadShape"] +[node name="HeadSprite" type="Sprite" parent="Path2D/PathFollow2D/Hitbox/HeadShape"] show_behind_parent = true position = Vector2( -4, 0 ) texture = ExtResource( 2 ) -[node name="InnerBorder" type="Sprite" parent="Hitbox/HeadShape"] +[node name="InnerBorder" type="Sprite" parent="Path2D/PathFollow2D/Hitbox/HeadShape"] position = Vector2( 3, 0 ) z_index = -1 texture = ExtResource( 5 ) -[node name="TailShape" type="CollisionShape2D" parent="Hitbox"] +[node name="TailShape" type="CollisionShape2D" parent="Path2D/PathFollow2D/Hitbox"] position = Vector2( 16, 0 ) shape = SubResource( 3 ) -[node name="TailSprite" type="Sprite" parent="Hitbox/TailShape"] +[node name="TailSprite" type="Sprite" parent="Path2D/PathFollow2D/Hitbox/TailShape"] show_behind_parent = true position = Vector2( 2, 0 ) texture = ExtResource( 4 ) -[node name="InnerBorder" type="Sprite" parent="Hitbox/TailShape"] +[node name="InnerBorder" type="Sprite" parent="Path2D/PathFollow2D/Hitbox/TailShape"] position = Vector2( -2, 0 ) z_index = -1 texture = ExtResource( 5 ) -[node name="Segment" type="CollisionShape2D" parent="Hitbox"] +[node name="Segment" type="CollisionShape2D" parent="Path2D/PathFollow2D/Hitbox"] unique_name_in_owner = true position = Vector2( 12, 0 ) shape = SubResource( 2 ) -[node name="SegmentSprite" type="Sprite" parent="Hitbox/Segment"] +[node name="SegmentSprite" type="Sprite" parent="Path2D/PathFollow2D/Hitbox/Segment"] show_behind_parent = true texture = ExtResource( 3 ) -[node name="InnerBorder" type="Sprite" parent="Hitbox/Segment"] +[node name="InnerBorder" type="Sprite" parent="Path2D/PathFollow2D/Hitbox/Segment"] position = Vector2( -2, 0 ) z_index = -1 texture = ExtResource( 5 ) -[node name="InnerBorder2" type="Sprite" parent="Hitbox/Segment"] +[node name="InnerBorder2" type="Sprite" parent="Path2D/PathFollow2D/Hitbox/Segment"] position = Vector2( 3, 0 ) z_index = -1 texture = ExtResource( 5 ) -[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="area_entered" from="Path2D/PathFollow2D/Hitbox" to="." method="_on_Hitbox_area_entered"]