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

72 lines
1.8 KiB
GDScript

extends Node
# Player AI
var ignore_input = false
var velocity_sum = Vector2(0.0,0.0)
func set_ignore_input(new_bool):
ignore_input = new_bool
func get_ignore_input():
return ignore_input
func get_user():
return get_parent()
# Get Player Input
func get_input():
if not ignore_input:
get_movement_input()
# Get Movement Key Input
func get_movement_input():
if Input.is_action_pressed('ui_right'):
movement_key_pressed(1)
if Input.is_action_pressed('ui_left'):
movement_key_pressed(2)
if Input.is_action_pressed('ui_up'):
movement_key_pressed(3)
if Input.is_action_pressed('ui_down'):
movement_key_pressed(4)
if Input.is_action_just_released("ui_right"):
movement_key_released(1)
if Input.is_action_just_released("ui_left"):
movement_key_released(2)
if Input.is_action_just_released("ui_up"):
movement_key_released(3)
if Input.is_action_just_released("ui_down"):
movement_key_released(4)
# WASD Movement
func movement_key_pressed(direction):
get_user().set_internal_velocity(Vector2(0.0,0.0))
if direction == 1: # right
velocity_sum.x = 0
velocity_sum.x += 1
get_user().animate("WalkRight")
elif direction == 2: # left
velocity_sum.x = 0
velocity_sum.x -= 1
get_user().animate("WalkLeft")
elif direction == 3: # up
velocity_sum.y = 0
velocity_sum.y -= 1
get_user().animate("WalkUp")
elif direction == 4: # down
velocity_sum.y = 0
velocity_sum.y += 1
get_user().animate("WalkDown")
# Velocity cannot be faster with more vectors
get_user().set_internal_velocity(velocity_sum)
func movement_key_released(direction):
if direction == 1 or direction == 2: # left/right
velocity_sum.x = 0
elif direction == 3 or direction == 4: # up/down
velocity_sum.y = 0
get_user().animate("Idle")
get_user().set_internal_velocity(velocity_sum)
# Physics Process
func _physics_process(_delta):
## Keyboard Movement
get_input()