From 863961cc9292c50b6ad4b70fdefedc009811e6d7 Mon Sep 17 00:00:00 2001 From: Hazel Snider Date: Mon, 16 Jan 2023 06:54:38 -0500 Subject: [PATCH] fix rolling fiend jank, but can only walk around convex paths now :( --- graphics/enemy/roller_fiend.png | Bin 638 -> 5893 bytes maps/cave.tscn | 16 ++++++++-------- objects/enemy/rolling_fiend.gd | 30 +++++++++++++++--------------- objects/enemy/rolling_fiend.tscn | 28 +++++++++------------------- 4 files changed, 32 insertions(+), 42 deletions(-) diff --git a/graphics/enemy/roller_fiend.png b/graphics/enemy/roller_fiend.png index 75628091051b965532a686ce4feada0247836569..5a929ad9db0ccb243af4f51e9bbba9cc2e0731e5 100644 GIT binary patch literal 5893 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 Q000UA07*qoM6N<$f;8j;0RR91 diff --git a/maps/cave.tscn b/maps/cave.tscn index 7bb31ca..2baeccd 100644 --- a/maps/cave.tscn +++ b/maps/cave.tscn @@ -305,28 +305,28 @@ right_down_boundry = 3.0 speed = 60 [node name="RollingFiend" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 144, 96 ) +position = Vector2( 144, 100 ) [node name="RollingFiend3" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 136, 24 ) +position = Vector2( 128, 28 ) [node name="RollingFiend4" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 168, 40 ) +position = Vector2( 168, 42 ) [node name="RollingFiend6" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 384, 40 ) +position = Vector2( 384, 44 ) [node name="RollingFiend7" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 440, 88 ) +position = Vector2( 440, 92 ) [node name="RollingFiend8" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 584, 24 ) +position = Vector2( 584, 28 ) [node name="RollingFiend10" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 608, 120 ) +position = Vector2( 608, 124 ) [node name="RollingFiend2" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 80, 144 ) +position = Vector2( 80, 148 ) [node name="Tentacle2" parent="Enemies" instance=ExtResource( 16 )] position = Vector2( 176, 104 ) diff --git a/objects/enemy/rolling_fiend.gd b/objects/enemy/rolling_fiend.gd index ca34a78..41c772d 100644 --- a/objects/enemy/rolling_fiend.gd +++ b/objects/enemy/rolling_fiend.gd @@ -1,22 +1,22 @@ extends "res://objects/enemy/enemy.gd" export var move_speed: float = 0.0 +export var clockwise: bool = false -var move_dir: Vector2 = Vector2(-1.0, 0.0) +onready var floor_test = Physics2DShapeQueryParameters.new() -onready var casts = $Raycasts -onready var wall_cast = $Raycasts/WallCast -onready var floor_cast = $Raycasts/FloorCast +var floor_direction = Vector2.DOWN + +func _ready(): + if clockwise: + $AnimatedSprite.flip_h = true + floor_test.set_shape($FloorTestShape.shape) + floor_test.collision_layer = 1 func _physics_process(delta): - position += move_dir * move_speed * delta - - var rotation_change = -1.5708 - if not floor_cast.is_colliding(): - casts.rotation += rotation_change - position -= move_dir - move_dir = move_dir.rotated(rotation_change) - position += move_dir - elif wall_cast.is_colliding(): - casts.rotation -= rotation_change - move_dir = move_dir.rotated(-rotation_change) + var rot_dir = -1.5708 if clockwise else 1.5708 + var space_state = get_world_2d().direct_space_state + floor_test.transform = global_transform.translated(floor_direction) + if space_state.collide_shape(floor_test, 1).empty(): + floor_direction = floor_direction.rotated(-rot_dir) + position += floor_direction.rotated(rot_dir) * move_speed * delta diff --git a/objects/enemy/rolling_fiend.tscn b/objects/enemy/rolling_fiend.tscn index 23fb04b..ab3a1c9 100644 --- a/objects/enemy/rolling_fiend.tscn +++ b/objects/enemy/rolling_fiend.tscn @@ -1,9 +1,12 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=10 format=2] [ext_resource path="res://graphics/enemy/roller_fiend.png" type="Texture" id=2] [ext_resource path="res://objects/enemy/rolling_fiend.gd" type="Script" id=3] [ext_resource path="res://scripts/1px_border.gdshader" type="Shader" id=4] +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 4, 4 ) + [sub_resource type="ShaderMaterial" id=5] shader = ExtResource( 4 ) shader_param/border_color = Color( 0, 0, 0, 1 ) @@ -26,38 +29,25 @@ animations = [ { } ] [sub_resource type="RectangleShape2D" id=4] -extents = Vector2( 4.0094, 4.0094 ) +extents = Vector2( 4, 4 ) [node name="RollingFiend" type="Node2D" groups=["enemy"]] script = ExtResource( 3 ) score_for_killing = 40 move_speed = 50.0 +[node name="FloorTestShape" type="CollisionShape2D" parent="."] +shape = SubResource( 8 ) + [node name="AnimatedSprite" type="AnimatedSprite" parent="."] material = SubResource( 5 ) -position = Vector2( 0, 1 ) frames = SubResource( 3 ) +frame = 1 playing = true [node name="Hitbox" type="Area2D" parent="."] -position = Vector2( 0, 1 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] -position = Vector2( -0.010025, 0.0104442 ) -rotation = -0.020475 shape = SubResource( 4 ) -[node name="Raycasts" type="Node2D" parent="."] -position = Vector2( 0, 1 ) - -[node name="WallCast" type="RayCast2D" parent="Raycasts"] -position = Vector2( -7, 7 ) -enabled = true -cast_to = Vector2( 0, -10 ) - -[node name="FloorCast" type="RayCast2D" parent="Raycasts"] -position = Vector2( -7, 8 ) -enabled = true -cast_to = Vector2( 10, 0 ) - [connection signal="area_entered" from="Hitbox" to="." method="_on_Area2D_area_entered"]