Godot Version
Godot_v4.2.1
Question
Okay so I’m having trouble with the flipping of hitbox when flip_h is active.
So here is my func for animating movement:
func play_move_anim(direction):
var dir = current_dir
if attack_ip == false:
if player_state == "idle":
if current_dir == "left":
$Sprite2D.flip_h = true
$Sprite2D/AnimationPlayer.play("idle")
else:
$Sprite2D.flip_h = false
$Sprite2D/AnimationPlayer.play("idle")
if player_state == "walking":
if direction.x == 1:
current_dir = "right"
$Sprite2D.flip_h = false
$Sprite2D/AnimationPlayer.play("walk")
if player_state == "walking":
if direction.x == -1:
current_dir = "left"
$Sprite2D.flip_h = true
$Sprite2D/AnimationPlayer.play("walk")
if direction.y == -1:
if current_dir == "right":
$Sprite2D.flip_h = false
$Sprite2D/AnimationPlayer.play("walk")
elif current_dir == "left":
$Sprite2D.flip_h = true
$Sprite2D/AnimationPlayer.play("walk")
if direction.y == 1:
if current_dir == "right":
$Sprite2D.flip_h = false
$Sprite2D/AnimationPlayer.play("walk")
elif current_dir == "left":
$Sprite2D.flip_h = true
$Sprite2D/AnimationPlayer.play("walk")
if direction.x > 0.5 and direction.y < -0.5:
current_dir = "right"
$Sprite2D.flip_h = false
$Sprite2D/AnimationPlayer.play("walk")
if direction.x > 0.5 and direction.y > 0.5:
current_dir = "right"
$Sprite2D.flip_h = false
$Sprite2D/AnimationPlayer.play("walk")
if direction.x < -0.5 and direction.y > 0.5:
current_dir = "left"
$Sprite2D.flip_h = true
$Sprite2D/AnimationPlayer.play("walk")
if direction.x < -0.5 and direction.y < -0.5:
current_dir = "left"
$Sprite2D.flip_h = true
$Sprite2D/AnimationPlayer.play("walk")
and this is my _physics_process func:
func _physics_process(delta):
if $Sprite2D.flip_h == false:
$Sprite2D/hitbox.position.x *= 1
elif $Sprite2D.flip_h == true:
$Sprite2D/hitbox.position.x *= -1
player_movement(delta)
attacking(delta)
so it works…sort of. When flip_h is active it seems the Area2d(hitbox) is rapidly switching from its default position to the new position at x *= -1. Occasionally when flipping orientation of the Sprite, the hitbox will get stuck on the wrong side of the sprite.
I dont know what Im doing wrong as it seems to partially work, just not as intenden.