Bladeren bron

:wrench: Make chickens turn away if colliding with each other

Prevent chicken graps.
DricomDragon 2 jaren geleden
bovenliggende
commit
abed216c3b
2 gewijzigde bestanden met toevoegingen van 25 en 6 verwijderingen
  1. 24 5
      godot/component/entity/chick/Chicken.gd
  2. 1 1
      godot/component/entity/chick/Chicken.tscn

+ 24 - 5
godot/component/entity/chick/Chicken.gd

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

+ 1 - 1
godot/component/entity/chick/Chicken.tscn

@@ -6,7 +6,7 @@
 [sub_resource type="CircleShape2D" id=1]
 radius = 34.9763
 
-[node name="Chicken" type="KinematicBody2D"]
+[node name="Chicken" type="KinematicBody2D" groups=["chicken"]]
 script = ExtResource( 2 )
 
 [node name="AnimatedSprite" type="AnimatedSprite" parent="."]