No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

player.gd 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. extends KinematicBody2D
  2. var speed = Vector2.ZERO
  3. export var jump_speed = 1100.0
  4. export var gravity = 45.0
  5. export var max_lives = 1
  6. enum {
  7. RUN,
  8. JUMP,
  9. IDLE
  10. }
  11. enum {
  12. SCORE,
  13. TIME
  14. }
  15. var jump_key = "dialogic_next"
  16. var player_enabled = false
  17. var state = RUN
  18. var au_sol = true
  19. var current_lives = max_lives
  20. onready var animation = $AnimatedSprite
  21. signal hit()
  22. signal die()
  23. signal score()
  24. func _ready():
  25. stop()
  26. func _physics_process(delta):
  27. if player_enabled:
  28. match state:
  29. RUN:
  30. animation.play("man_run")
  31. JUMP:
  32. speed = Vector2.ZERO
  33. speed.y -= jump_speed
  34. animation.play("man_jump")
  35. state = IDLE
  36. IDLE:
  37. pass
  38. speed.y += gravity
  39. move_and_collide(speed*delta)
  40. func _input(event):
  41. if player_enabled and state == RUN and event.is_action_pressed(jump_key):
  42. state = JUMP
  43. func _on_Area2D_body_entered(body):
  44. if body is StaticBody2D:
  45. state = RUN
  46. func _on_Area2D_body_exited(body):
  47. if body is StaticBody2D:
  48. state = JUMP
  49. func start():
  50. show()
  51. player_enabled = true
  52. func stop():
  53. hide()
  54. player_enabled = false
  55. func hit():
  56. current_lives -= 1
  57. if current_lives > 0:
  58. emit_signal("hit")
  59. else:
  60. current_lives = 0
  61. emit_signal("die")
  62. func bonus():
  63. emit_signal("score")