fix rolling fiend jank, but can only walk around convex paths now :(
This commit is contained in:
parent
88b4135315
commit
863961cc92
4 changed files with 32 additions and 42 deletions
Binary file not shown.
Before Width: | Height: | Size: 638 B After Width: | Height: | Size: 5.8 KiB |
|
@ -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 )
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue