Skip to content

Instantly share code, notes, and snippets.

@YeOldeDM
Created December 24, 2015 21:11
Show Gist options
  • Save YeOldeDM/92378d954bba0393e9ac to your computer and use it in GitHub Desktop.
Save YeOldeDM/92378d954bba0393e9ac to your computer and use it in GitHub Desktop.
extends RigidBody2D
var SPD = 128.0
var mstate = 'Idle'
var direction = 'up'
func _integrate_forces(state):
var lv = get_linear_velocity()
var old_state = mstate+'-'+direction
var UP = Input.is_action_pressed('UP')
var DOWN = Input.is_action_pressed('DOWN')
var LEFT = Input.is_action_pressed('LEFT')
var RIGHT = Input.is_action_pressed('RIGHT')
var bit = 0
if UP:
bit += 1
direction = 'up'
if DOWN:
bit += 4
direction = 'down'
if RIGHT:
bit += 2
direction = 'right'
if LEFT:
bit += 8
direction = 'left'
if bit in [0,5,7,10,11,14,15]: #null movement
lv = Vector2(0,0)
if bit == 1: #UP
lv = Vector2(0,-SPD)
if bit == 2: #LEFT
lv = Vector2(SPD,0)
if bit == 3: #UP-RIGHT
lv = Vector2(SPD,-SPD)/sqrt(2)
if bit == 4: #DOWN
lv = Vector2(0,SPD)
if bit == 6: #DOWN-RIGHT
lv = Vector2(SPD,SPD)/sqrt(2)
if bit == 8: #LEFT
lv = Vector2(-SPD,0)
if bit == 9: #UP-LEFT
lv = Vector2(-SPD,-SPD)/sqrt(2)
if bit == 12: #DOWN-LEFT
lv = Vector2(-SPD,SPD)/sqrt(2)
if abs(lv.x)+abs(lv.y) > 0:
mstate = 'walk'
else:
mstate = 'Idle'
set_linear_velocity(lv)
var new_state = mstate+'-'+direction
if new_state != old_state:
get_node('animator').play(str(new_state))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment