Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends KinematicBody
- onready var AnimSprite = $AnimatedSprite3D
- var velocity = Vector3()
- var speed = 7
- var isAttacking = false
- var isJumping = false
- var jump_impulse = 300
- var input_vector = Vector3.ZERO
- onready var AttackArea = $AttackArea
- export (int) var damage := 10
- var canMove = false
- var AttackPoints = 2
- var timer = null
- var crouch_delay = 0.5
- var isCrouch = true
- var current_animation
- func _ready():
- $attackArea/CollisionShape.disabled = true
- func _process(delta):
- if not isAttacking:
- velocity.x = speed * Input.get_axis("ui_left", "ui_right")
- velocity.z = speed * Input.get_axis("ui_up", "ui_down")
- AnimSprite.play("walking")
- if velocity.x == 0 and velocity.z == 0:
- AnimSprite.play("idle")
- isAttacking = false
- if isAttacking:
- $attackArea/CollisionShape.disabled = true
- if Input.is_action_just_pressed("attack") && AttackPoints == 3:
- $AttackResetTimer.start()
- velocity.x = 0
- velocity.z = 0
- $AnimatedSprite3D.play("Attack_1")
- AttackPoints = AttackPoints - 1
- $attackArea/CollisionShape.disabled = false
- isAttacking = true
- elif Input.is_action_just_pressed("attack") && AttackPoints == 2:
- $AttackResetTimer.start()
- velocity.x = 0
- velocity.z = 0
- $AnimatedSprite3D.play("Attack_2")
- AttackPoints = AttackPoints - 1
- $attackArea/CollisionShape.disabled = false
- isAttacking = true
- elif Input.is_action_just_pressed("attack") && AttackPoints == 1:
- $AttackResetTimer.start()
- velocity.x = 0
- velocity.z = 0
- $AnimatedSprite3D.play("Attack_3")
- AttackPoints = AttackPoints - 1
- $attackArea/CollisionShape.disabled = false
- isAttacking = true
- elif isAttacking == false:
- speed = 3
- velocity = move_and_slide(velocity, Vector3.UP * delta)
- var motion = velocity.normalized() * speed
- func _on_AnimatedSprite3D_animation_finished():
- if $AnimatedSprite3D.animation == "Attack_1":
- $AnimatedSprite3D.play("idle")
- elif $AnimatedSprite3D.animation == "Attack_2":
- $AnimatedSprite3D.play("idle")
- elif $AnimatedSprite3D.animation == "Attack_3":
- $AnimatedSprite3D.play("idle")
- isAttacking = false
- func _on_AttackResetTimer_timeout():
- AttackPoints = 3
- func _on_attackArea_body_entered(body):
- if body.has_method("knockback"):
- body.knockback(damage)
- if body.health > 0:
- if AnimSprite.animation == "Attack_1" or AnimSprite.animation == "Attack_2":
- body.state = body.states.STUNNED
- yield(get_tree().create_timer(0.5), "timeout")
- body.state = body.states.IDLE
- if body.health <= 0:
- body.state = body.states.KNOCKBACK
- yield(get_tree().create_timer(0.5), "timeout")
- $CollisionShape.disabled = true
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement