fix rolling fiend jank, but can only walk around convex paths now :(

This commit is contained in:
Haze Weathers 2023-01-16 06:54:38 -05:00
parent 88b4135315
commit 863961cc92
4 changed files with 32 additions and 42 deletions

View file

@ -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