BaseMob.gd 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. class_name BaseMob
  2. extends KinematicBody2D
  3. var gravity = 300.0
  4. export var speed = 10
  5. export var base_max_velocity = 100.0
  6. var max_velocity = 100.0
  7. var jump_strength = 0.65
  8. var jump_burst = 210.0
  9. var velocity = Vector2()
  10. var previous_real_velocity = Vector2()
  11. var real_velocity = Vector2()
  12. var lives = 1
  13. export var frozen = true
  14. func read_input(_delta):
  15. pass
  16. func fundamental_forces(delta):
  17. velocity.y += delta * gravity * 2
  18. if abs(velocity.x) > max_velocity:
  19. velocity.x = sign(velocity.x) * max_velocity
  20. func apply_movement(_delta):
  21. previous_real_velocity = real_velocity
  22. real_velocity = move_and_slide(velocity, Vector2(0.0, -1.0))
  23. func stairs(_delta):
  24. pass
  25. func post_movement(_delta):
  26. pass
  27. func animate(_delta):
  28. pass
  29. func finalize(_delta):
  30. pass
  31. func strike():
  32. velocity = Vector2(0, 0)
  33. func watch_for_death(delta):
  34. if lives < 1:
  35. set_scale(Vector2(1.0, get_scale().y - delta * 5.0))
  36. frozen = true
  37. if get_scale().y < 0.0:
  38. queue_free()
  39. func _process(delta):
  40. watch_for_death(delta)
  41. if frozen:
  42. return
  43. if lives > 0:
  44. read_input(delta)
  45. fundamental_forces(delta)
  46. stairs(delta)
  47. apply_movement(delta)
  48. post_movement(delta)
  49. animate(delta)
  50. finalize(delta)