|
@@ -13,20 +13,39 @@ func attack(from: Vector2, angle: float):
|
|
|
|
|
|
velocity = Vector2(walk_linear_speed, 0).rotated(angle)
|
|
|
$AnimatedSprite.play("walk")
|
|
|
- $AnimatedSprite.flip_h = velocity.x < 0.0
|
|
|
+ _update_sprite_direction()
|
|
|
|
|
|
|
|
|
func _physics_process(delta):
|
|
|
- move_and_collide(velocity * delta)
|
|
|
+ var collision = move_and_collide(velocity * delta)
|
|
|
+ _collide_and_react(collision)
|
|
|
|
|
|
|
|
|
func _on_VisibilityNotifier2D_screen_exited():
|
|
|
- die()
|
|
|
+ _die()
|
|
|
|
|
|
|
|
|
func _on_Spawner_reset():
|
|
|
- die()
|
|
|
+ _die()
|
|
|
|
|
|
|
|
|
-func die():
|
|
|
+func _die():
|
|
|
queue_free()
|
|
|
+
|
|
|
+
|
|
|
+func _collide_and_react(collision: KinematicCollision2D) -> void:
|
|
|
+ if collision == null:
|
|
|
+ return
|
|
|
+
|
|
|
+ var collider = collision.get_collider()
|
|
|
+ if collider is KinematicBody2D and (collider as Node).is_in_group("chicken") :
|
|
|
+ _turn_away()
|
|
|
+
|
|
|
+
|
|
|
+func _turn_away() -> void:
|
|
|
+ velocity.x = -velocity.x
|
|
|
+ _update_sprite_direction()
|
|
|
+
|
|
|
+
|
|
|
+func _update_sprite_direction() -> void:
|
|
|
+ $AnimatedSprite.flip_h = velocity.x < 0.0
|