91 lines
2.4 KiB
GDScript3
91 lines
2.4 KiB
GDScript3
extends Node2D
|
|
|
|
# Declare member variables here. Examples:
|
|
# var a = 2
|
|
# var b = "text"
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
const DASH_SPEED = 300
|
|
const UP = Vector2(0, -1)
|
|
const RADperDEGREE = 57.2957795
|
|
|
|
const SLASH_ANIMATION = preload("res://Nodes/Animations/SlashAnimation.tscn")
|
|
var player
|
|
var colliderShape
|
|
|
|
|
|
func _ready():
|
|
colliderShape = $AnimatedSprite/Area2D/CollisionShape2D.get_shape()
|
|
get_child(0).get_child(0).hide()
|
|
player = get_parent().get_parent()
|
|
player.connect("unequip", self, "on_unequip")
|
|
$AnimatedSprite.connect("animation_finished", self, "on_animation_finished")
|
|
$AnimatedSprite/Area2D.connect("body_entered", self, "on_collide")
|
|
$AnimatedSprite.play("Spawn")
|
|
pass # Replace with function body.
|
|
|
|
var audioPlayer
|
|
func playAudio(track):
|
|
if !audioPlayer:
|
|
audioPlayer = AudioStreamPlayer.new()
|
|
self.add_child(audioPlayer)
|
|
audioPlayer.stream = load("res://Sound/" + track)
|
|
audioPlayer.volume_db = -30
|
|
audioPlayer.play()
|
|
|
|
func on_unequip():
|
|
$AnimatedSprite.play("Spawn", true)
|
|
|
|
func on_collide(body):
|
|
if(body.has_method("take_damage")):
|
|
print(body)
|
|
if($AnimatedSprite.animation == "Attack"):
|
|
print("ATTACK")
|
|
body.take_damage(1)
|
|
pass
|
|
|
|
|
|
var pos
|
|
func _physics_process(delta):
|
|
|
|
$AnimatedSprite.flip_h = get_global_mouse_position().x < global_position.x
|
|
if(get_global_mouse_position().x < global_position.x):
|
|
$AnimatedSprite/Area2D.rotation = PI
|
|
else:
|
|
$AnimatedSprite/Area2D.rotation = 0
|
|
|
|
if($AnimatedSprite.animation == "Attack"):
|
|
$AnimatedSprite/Area2D/CollisionShape2D.shape = colliderShape
|
|
else:
|
|
$AnimatedSprite/Area2D/CollisionShape2D.shape = null
|
|
|
|
if($AnimatedSprite.animation != "Spawn"):
|
|
if(Input.is_action_just_pressed("attack")):
|
|
if($AnimatedSprite.animation != "Attack"):
|
|
playAudio("Charge2.wav")
|
|
get_child(0).get_child(0).show()
|
|
$AnimatedSprite.play("Attack")
|
|
pos = player.global_position - get_global_mouse_position()
|
|
var angle = atan(pos.y/pos.x)
|
|
var goUp = -1
|
|
var goRight = -1
|
|
if(pos.y < 0):
|
|
goUp = 1
|
|
if(pos.x < 0):
|
|
goRight = 1
|
|
var xVar = cos(abs(angle)) * DASH_SPEED * goRight
|
|
var yVar = sin(abs(angle)) * DASH_SPEED
|
|
yVar = (yVar) * goUp - 20
|
|
pos = Vector2(xVar, yVar)
|
|
|
|
if($AnimatedSprite.animation == "Attack"):
|
|
player.move_and_slide(pos, UP)
|
|
|
|
|
|
|
|
|
|
func on_animation_finished():
|
|
if($AnimatedSprite.animation != "idle"):
|
|
get_child(0).get_child(0).hide()
|
|
$AnimatedSprite.play("idle")
|