Advertisement
Trophonix

godot improvement

Mar 27th, 2018
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.17 KB | None | 0 0
  1. extends KinematicBody2D
  2.  
  3. const SPEED = 70
  4. const DIRS = {
  5.     "left": Vector2(-1, 0),
  6.     "right": Vector2(1, 0),
  7.     "up": Vector2(0, -1),
  8.     "down": Vector2(0, 1)
  9. }
  10.  
  11. var movedir = Vector2(0, 0)
  12. var spritedir = "down"
  13.  
  14. func _physics_process(delta):
  15.     controls_loop()
  16.     movement_loop()
  17.     spritedir_loop()
  18.    
  19.     if is_on_wall():
  20.         for dir in DIRS:
  21.             var vec = DIRS[dir]
  22.             if spritedir == dir and test_move(transform, vec):
  23.                 anim_switch("push")
  24.    
  25.     elif movedir != Vector2(0,0):
  26.         anim_switch("walk")
  27.     else:
  28.         anim_switch("idle")
  29.  
  30. func controls_loop():
  31.     var LEFT    = Input.is_action_pressed("ui_left")
  32.     var RIGHT   = Input.is_action_pressed("ui_right")
  33.     var UP      = Input.is_action_pressed("ui_up")
  34.     var DOWN    = Input.is_action_pressed("ui_down")
  35.    
  36.     movedir.x = -int(LEFT) + int(RIGHT)
  37.     movedir.y = -int(UP) + int(DOWN)
  38.  
  39. func movement_loop():
  40.     var motion = movedir.normalized() * SPEED
  41.     move_and_slide(motion, Vector2(0, 0))
  42.  
  43. func spritedir_loop():
  44.     for dir in DIRS:
  45.         var vec = DIRS[dir]
  46.         if movedir == vec:
  47.             spritedir = dir
  48.  
  49. func anim_switch(animation):
  50.     var newanim = str(animation, spritedir)
  51.     if $anim.current_animation != newanim:
  52.         $anim.play(newanim)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement