godot-shooter / commit
Slight enemy behavior changes.
actors/Enemy.gd | 19 +++++++++++-------- actors/Enemy.tscn | 8 ++++---- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/actors/Enemy.gd b/actors/Enemy.gd index 2403822..b0bbf25 100644 --- a/actors/Enemy.gd +++ b/actors/Enemy.gd @@ -3,6 +3,7 @@ class_name Enemy onready var damage_points = $DamagePoints onready var navigation_agent: NavigationAgent2D = $NavigationAgent2D +onready var ship_collision_shape: CollisionPolygon2D = $ShipCollisionShape const Utils = preload("res://utils/Utils.gd") const Explosion = preload("res://effects/Explosion.tscn") const Smoke = preload("res://effects/Smoke.tscn") @@ -10,16 +11,17 @@ const Damage = preload("res://effects/Damage.tscn") const Constants = preload("res://utils/Constants.gd") const Weapons = preload("res://weapons/Weapons.gd") +export var is_invincible = false export var move_speed = Constants.SPEED * 1.05 export var turn_rate = 0.03 export var health = -1 export var max_health = 100 export var is_targeted = false -export var is_invincible = false export var target: Vector2 export var follow_target = false signal enemy_killed(position) +var player var weapon: Weapon var velocity = Vector2.ZERO var dead = false @@ -32,7 +34,10 @@ func _ready() -> void: var _err = navigation_agent.connect("path_changed", self, "path_changed") _err = navigation_agent.connect("velocity_computed", self, "velocity_computed") _err = navigation_agent.connect("target_reached", self, "target_reached") - + var players = get_tree().get_nodes_in_group("player") + self.player = players[0] + ship_collision_shape.connect() + $AnimationPlayer.play("fade_in") if health < 0 or health > max_health: health = max_health @@ -51,8 +56,7 @@ func velocity_computed(new_vel: Vector2) -> void: pass func target_reached() -> void: - var players = get_tree().get_nodes_in_group("player") - var player = players[0] + Utils.log("enemy", self, "reached player", player, "at", self.position) player.hurt(25) var explosion = Explosion.instance() explosion.transform = transform @@ -76,9 +80,10 @@ func _process(_delta: float) -> void: $Graphics/Alive/Sprite/Target.global_rotation = 0 $Graphics/Alive/Sprite/Trails.add_position(global_position) - var players = get_tree().get_nodes_in_group("player") - var player = players[0] var dist_to_player = global_position.distance_to(player.global_position) +# Utils.log("dist to player", dist_to_player) + if dist_to_player < 25: + target_reached() var should_shoot = dist_to_player < weapon.shooting_range if should_shoot: @@ -173,8 +178,6 @@ func remove_thyself(): queue_free() func _on_Area2D_body_entered(body: Node) -> void: - var players = get_tree().get_nodes_in_group("player") - var player = players[0] var is_player = body == player if is_player: player.hurt(2) diff --git a/actors/Enemy.tscn b/actors/Enemy.tscn index affedab..972d51c 100644 --- a/actors/Enemy.tscn +++ b/actors/Enemy.tscn @@ -143,10 +143,10 @@ polygon = PoolVector2Array( 0, -23, -7, 5, -12, 9, -19, 9, -23, 14, -23, 19, -19 [node name="DamageObjects" type="Node2D" parent="."] [node name="NavigationAgent2D" type="NavigationAgent2D" parent="."] -path_desired_distance = 35.0 -target_desired_distance = 35.0 +path_desired_distance = 10.0 navigation_layers = 3 avoidance_enabled = true -radius = 35.0 -neighbor_dist = 100.0 +radius = 40.0 +max_neighbors = 20 +time_horizon = 30.0 max_speed = 50.0