70 lines
2.1 KiB
GDScript
70 lines
2.1 KiB
GDScript
extends Node2D
|
|
|
|
export var hp : int = 3 # Number of hits before dying
|
|
onready var fish = get_node("/root/Tank/Fish")
|
|
var moving = true
|
|
var dest_counter : int = 0
|
|
var next_dest = 60
|
|
var destination : Vector2
|
|
|
|
func _ready():
|
|
print("I liiiiive...!")
|
|
|
|
|
|
func _process(delta: float) -> void:
|
|
$SwordPivot.rotation_degrees += 1
|
|
|
|
if destination:
|
|
var v = get_global_mouse_position() - global_position
|
|
var angle = v.angle() + deg2rad(270)
|
|
# if global_position.x < get_global_mouse_position().x:
|
|
# $AnimatedSprite.flip_v = false
|
|
# else:
|
|
# $AnimatedSprite.flip_v = true
|
|
if rad2deg(angle) < 180 or rad2deg(angle) > 360:
|
|
$AnimatedSprite.flip_v = true
|
|
else:
|
|
$AnimatedSprite.flip_v = false
|
|
var rotation_speed = PI * 0.75 # PI = 180 degrees
|
|
var angle_delta = rotation_speed * delta
|
|
angle = lerp_angle(global_rotation, angle + 1.57, 1.0)
|
|
angle = clamp(angle, global_rotation - angle_delta, global_rotation + angle_delta)
|
|
global_rotation = angle
|
|
|
|
|
|
func _select_destination() -> Vector2:
|
|
var dest = Vector2(rand_range(200, 1500), rand_range(200, 880))
|
|
return dest
|
|
|
|
|
|
func _on_SwordHitbox_area_entered(area: Area2D) -> void:
|
|
if area.is_in_group("Fish"):
|
|
fish.belly_up("Piranha")
|
|
|
|
|
|
func _on_Blindzone_area_entered(area: Area2D) -> void:
|
|
if area.is_in_group("Fish"):
|
|
moving = false
|
|
$TweenSwim.stop_all()
|
|
|
|
|
|
func _on_Blindzone_area_exited(area):
|
|
if area.is_in_group("Fish"):
|
|
moving = true
|
|
|
|
|
|
func _on_Timer_timeout() -> void:
|
|
#destination.x = move_toward(position.x, fish.get_global_position().x)
|
|
#destination.y = move_toward(position.y, fish.get_global_position().y)
|
|
destination.x = move_toward(global_position.x, get_global_mouse_position().x, 100)
|
|
destination.y = move_toward(global_position.y, get_global_mouse_position().y, 100)
|
|
# if dest_counter >= next_dest:
|
|
# destination = _select_destination()
|
|
# next_dest = rand_range(60,1200) # second number lower = move more frequently
|
|
# dest_counter = 0
|
|
# else:
|
|
# dest_counter +=1
|
|
if moving:
|
|
$TweenSwim.interpolate_property(self, "position", position, destination, 0.85, Tween.TRANS_EXPO, Tween.EASE_OUT) #number lower = faster
|
|
$TweenSwim.start()
|