glitch-in-the-system/Scripts/Equipment/saber.gd

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")