The snowmen enemy were acting funny - turns out there were acknowledging the walls as the player, oops. added fix for them to ignore the wall
43 lines
1.0 KiB
GDScript
43 lines
1.0 KiB
GDScript
extends KinematicBody2D
|
|
|
|
onready var SNOWBALL_BLUE_SCENE = preload("res://snowball_blue.tscn")
|
|
|
|
var player = null
|
|
var move = Vector2.ZERO
|
|
var speed = 1
|
|
|
|
func _physics_process(delta: float) -> void:
|
|
move = Vector2.ZERO
|
|
|
|
if player != null:
|
|
move = position.direction_to(player.position) * speed
|
|
else:
|
|
move = Vector2.ZERO
|
|
|
|
move = move.normalized()
|
|
move = move_and_collide(move)
|
|
|
|
|
|
|
|
func _on_Area2D_body_entered(body: Node) -> void:
|
|
if body != self && !(body.name.begins_with("tree")) && !(body.name.begins_with("snowmen_enemy")) && !(body.name.begins_with("wall")):
|
|
player = body
|
|
|
|
|
|
func _on_Area2D_body_exited(body: Node) -> void:
|
|
if !(body.name.begins_with("tree")) && !(body.name.begins_with("snowmen_enemy")) && !(body.name.begins_with("wall")):
|
|
player = null
|
|
|
|
|
|
func fire():
|
|
var snowball = SNOWBALL_BLUE_SCENE.instance()
|
|
snowball.position = get_global_position()
|
|
snowball.player = player
|
|
get_parent().add_child(snowball)
|
|
$Timer.set_wait_time(1)
|
|
|
|
|
|
func _on_Timer_timeout() -> void:
|
|
if player != null:
|
|
fire()
|