Advertisement
drpanwe

godot framerate independency

Aug 31st, 2020
2,379
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.67 KB | None | 0 0
  1. extends KinematicBody2D
  2.  
  3. # Desired movement in pixels/frame in 60 FPS
  4. # var movement = Vector2(1,0)
  5. # Desired movement in pixels/second in whatever FPS
  6. var movement = Vector2(60,0)
  7.  
  8. # Initialize variables
  9. var time_passed_seconds = 0
  10. var counter = 1
  11. var start_counting_time = 0
  12. var first_time = true
  13. var previous_fps = 0
  14. var current_fps = 0
  15. var actual_start = 0
  16. var screen_width=OS.get_window_size().x
  17. var speed_per_second=0
  18. var speed_per_frame=0
  19.    
  20. func _ready():
  21.     print(OS.get_window_size().x)
  22.     print(get_position())
  23.     set_position(Vector2(0,150))
  24.  
  25.  
  26. func _physics_process(delta):
  27.     if Engine.get_frames_per_second() < 30:
  28.         print("Game is starting ...")
  29.         return
  30.    
  31.     # The game has started
  32.     time_passed_seconds = OS.get_ticks_msec() / 1000.0
  33.     if first_time:
  34.         start_counting_time = time_passed_seconds - delta
  35.         first_time = false
  36.        
  37.     current_fps = Engine.get_frames_per_second()
  38.    
  39.     if previous_fps != current_fps:
  40.         print("FPS change has been detected: ", previous_fps, " --> ", current_fps)
  41.         counter = 1
  42.         previous_fps = current_fps
  43.        
  44.     if counter > current_fps:
  45.         # Reset the framecounter
  46.         counter = 1
  47.    
  48.     # Calculate speed per second
  49.     #speed_per_second = screen_width / 5
  50.     #speed_per_frame = speed_per_second * (1/current_fps)
  51.     #movement = Vector2(speed_per_frame,0)
  52.    
  53.     # Move
  54.     $Sprite.position += movement * delta
  55.     #$Sprite.position += movement
  56.    
  57.     print("Object update: ", counter,"/", current_fps, " frames | delta time:", delta, "s | total time: ", time_passed_seconds-start_counting_time, " s | Position: ", int($Sprite.position.x))
  58.    
  59.     if $Sprite.position.x >= 300:
  60.         print("The end")
  61.         OS.exit_code = 0
  62.         get_tree().quit()
  63.    
  64.     counter += 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement